Medical infusion pump communication and programming with computing devices

ABSTRACT

Methods of monitoring use and displaying information from a medical infusion pump are disclosed. A method includes a computing device receiving information relating to operation of the medical infusion pump and displaying the information. The information can be displayed in a plurality of stacked windows, each having a tab that is selectable to make that window the active window in which a user can view and edit information.

RELATED APPLICATIONS

This application is a continuation of application Ser. No. 13/477,641,filed May 22, 2012, which in turn is a continuation of Ser. No.13/281,168, filed Oct. 25, 2011, now U.S. Pat. No. 8,657,807, issuedFeb. 25, 2014, which in turn is a continuation of Ser. No. 11/582,519filed Oct. 17, 2006, now abandoned, which is hereby fully incorporatedherein by reference.

TECHNICAL FIELD

The present invention relates to insulin pumps, and more particularly,to insulin pumps having correction factors.

BACKGROUND

A large portion of the world's population suffers from diabetes. Many ofthese people need to take injections of insulin to normalize the levelof sugar in their bodies to prevent complications. Such complicationscan include kidney failure, loss of circulation, and blindness. The needto manually take injections with a syringe and the process ofdetermining the dose for various shots can be a great inconvenience andcan limit a diabetic's activities and restrict their movements.Furthermore, it can be difficult to maintain a consistent level of bloodglucose because there is a practical limit to the number of injectionsthat most patients can receive.

One solution to reduce some of the problems associated with the manualinjection of insulin is an ambulatory pump that delivers insulin to thediabetic user. Such insulin pumps can provide a more consistently normallevel of blood glucose, which reduces the risk of complications fromdiabetes. However, current pumps still have practical limits to theirprogramming that make them cumbersome to program and that limits thepotential of the pump to provide even greater control over blood glucoselevels.

SUMMARY

According to a first aspect, a method of regulating blood glucose levelsusing an insulin pump is disclosed. The method includes receiving acurrent blood glucose level, and determining whether the current bloodglucose level is above a threshold value. The method also includescalculating a correction bolus value based upon the current bloodglucose.

According to a second aspect, an insulin pump is disclosed. The insulinpump includes a pump mechanism and a memory configured to store one ormore blood glucose levels. The insulin pump also includes a programmablecircuit arranged to control the pump mechanism and operatively connectedto the memory. The programmable circuit is programmed to receive acurrent blood glucose level and determine whether the current bloodglucose level is above a threshold value. The programmable circuit isalso programmed to calculate a correction bolus value based upon thecurrent blood glucose.

According to a third aspect, an insulin pump is disclosed. The insulinpump includes a pump mechanism and a memory configured to store one ormore rules, each rule including a threshold and a percentage. Theinsulin pump includes a programmable circuit arranged to control thepump mechanism and operatively connected to the memory. The programmablecircuit is programmed to prompt a user to input the threshold value andthe percentage for at least one rule. The programmable circuit isfurther programmed to receive a current blood glucose level, anddetermine whether the current blood glucose level is above a thresholdvalue. The programmable circuit is also programmed to, upon determiningthat the current blood glucose level is above the threshold value, altera correction bolus calculation factor. The programmable circuit isprogrammed to calculate a correction bolus value based upon thecorrection factor and deliver the correction bolus to the user.

DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates the architecture of a pump that embodies the presentinvention;

FIG. 2 is a top view of the pump shown in FIG. 1;

FIG. 3 illustrates setting time and date operating parameters in thepump shown in FIGS. 1 and 2;

FIG. 4 illustrates setting alert styles in the pump shown in FIGS. 1 and2;

FIGS. 5 and 6 illustrate setting operational parameters related to thepump history for the pump shown in FIGS. 1 and 2;

FIGS. 7-9 illustrate basal rate testing executed by the pump shown inFIGS. 1 and 2;

FIGS. 10-12 illustrate setting operational parameters for the basal ratedelivery programs executed by the pump shown in FIGS. 1 and 2;

FIG. 13 illustrates setting the operational parameters for thecorrection bolus delivery programs executed by the pump shown in FIGS. 1and 2;

FIGS. 14A-14D illustrate insulin absorption models used in thecorrection bolus delivery programs executed by the pump shown in FIGS. 1and 2;

FIG. 15 illustrates setting the operational parameters for thecorrection bolus delivery programs executed by the pump shown in FIGS. 1and 2;

FIGS. 16-24 illustrate setting the operational parameters for the mealbolus delivery programs executed by the pump shown in FIGS. 1 and 2;

FIG. 25 illustrates the operations of setting and delivering an audiobolus on the pump shown in FIGS. 1 and 2;

FIG. 26 illustrates the pump shown in FIGS. 1 and 2 communicating with acomputer;

FIGS. 27A-27F illustrate a user interface on the computer illustrated inFIG. 26.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Various embodiments of the present invention will be described in detailwith reference to the drawings, wherein like reference numeralsrepresent like parts and assemblies throughout the several views.Reference to various embodiments does not limit the scope of theinvention, which is limited only by the scope of the claims attachedhereto. Additionally, any examples set forth in this specification arenot intended to be limiting and merely set forth some of the manypossible embodiments for the claimed invention.

The logical operations of the various embodiments of the inventiondescribed herein are implemented as: (1) a sequence of computerimplemented steps, operations, or procedures running on a programmablecircuit within a computer, (2) a sequence of computer implemented steps,operations, or procedures running on a programmable circuit within apump for delivering insulin; and/or (3) interconnected machine modulesor program engines within the programmable circuits.

The various embodiments execute or utilize operating parameters, whichcustomize or personalize operation of the computer implemented steps,machine modules, and programs to meet the requirements of individualpump users. The operating parameters can be numerical values, textstrings, flags, argument names, or any other aspect of the insulin pumpprogramming that the user can set to control operation of the pump.

Additionally, the pump generates and presents information and fields inuser interfaces, which are also referred to as displays. The userinterfaces can include fields, alpha/numeric character strings, times,and dates. The fields, also referred to as cells, prompt users to enterand/or select information. Because there is not an alpha/numerickeyboard on the pump, each of the field is associated with a spin boxthat includes values the user can enter into the field. The user spinsor scrolls through values until the desired value is visible within thefield. When the user selects the visible value it is entered into thefield. The user selects a value with a Next function, Edit function, orSelect function as identified herein. When the pump displays a field andthe field has focus, it is said to prompt the user to select a value.Additionally, selecting a value in a field causes the pump to indexfocus to the next field as defined by the programmed operations or todisplay the next user interface as defined by the programmed operations.In an alternative embodiment, the pump has an alpha/numeric keyboardfrom which operating parameters can be typed directly into the pump.

The description set forth herein discusses pumping insulin. One skilledin the art will realize that many of the features, structures, andmethods disclosed herein can be used with medical infusion pumps fordelivering agents other than insulin. The term “user” generally appliesto the person who is receiving insulin from the pump. In many contexts,however, the user could also refer to any other person such as acaregiver that is operating the pump.

A. Pump Architecture

FIG. 1 is a functional block diagram illustrating one of many possibleembodiments of an insulin pump, generally identified as 100. Amicroprocessor 102 is in electrical communication with and controls apump motor 104, a screen 106, an audible alarm 108, and a vibratoryalarm 110. Other embodiments can use a microcomputer, or any other typeof programmable circuit, in place of the microprocessor.

The pump motor 104 drives a drive mechanism 112 that pushes a plungermechanism 114. The plunger mechanism 114 ejects insulin from an insulincartridge (not shown). The insulin cartridge contains a supply ofinsulin for delivery to a patient. These mechanical components areillustrated and discussed in commonly assigned U.S. patent applicationSer. No. 10/086,646, entitled Cartridge and Pump With Axial Loading, thedisclosure of which is hereby incorporated by reference.

The screen 106 can have many different configurations such as an LCDscreen. As explained in more detail herein, the screen 106 displays auser interface that presents various items of information useful to apatient or caregiver. The audible alarm 108 is a beeper, and an alarmprovides actual alarms, warnings, and reminders. Similar to otherportable electronic devices such as a cellular telephone, the vibratoryalarm 110 provides an alarm to either supplement the audio alarms orreplace the audio alarm when an audible beep would be disruptive or notheard. A user can selectively enable or disable the audible 108 andvibratory 110 alarms. In one possible embodiment, however, both theaudible 108 and vibratory 110 alarms cannot be disabled at the sametime.

The microprocessor 102 is in electrical communication with both a randomaccess memory (RAM) I 16 and a read only memory (ROM) I 18, which areonboard the pump 100 but external to the microprocessor 102 itself. Themicroprocessor 102 can be any programmable circuit configured to executeinstructions stored in the memory devices. In one possible embodiment,the microprocessor 102 includes internal memory as well. The RAM 116 isa static RAM stores that data that can change over time such as pumpsettings and a historical log of events experienced by the insulin pump100. The ROM 118 stores code for the operating system and theapplication programs. The ROM 118 can be any type of programmable ROMsuch as an EPROM. In one possible embodiment, the RAM 116 has 500kilobytes of memory capacity and the ROM 118 has 2 megabytes of memorycapacity.

An infrared (IR) port 120 is in electrical communication with themicroprocessor. As explained in more detail below, the IR port 120provides data communication with an external device such as a computerfor programming an application program, programming pump settings, anddownloading historical data logs. The insulin pump 100 can include othertypes of communication ports in place of or in addition to the IR port120. Examples of other possible communication ports include a radiofrequency (RF) port or a port that provides a hard-wired datacommunication link such as an RS-232 port, a USB port, or the like.

A real-time clock 122 provides a clock signal to the microprocessor 102.An advantage of having a real-time clock 122 is that it provides theprogram with the actual time in real-time, including day of the week, sothat the programs executed by the insulin pump can track and control theactual time of day that insulin delivery and other events occur. Variousdurations described here are used for alerts, alarms, reminders, andother functions. In one possible embodiment, the timers are formed bythe real-time clock 122 and software executed by the microprocessor 102.

A battery 123 electrically connects to the real time clock 122 and theRAM 116. The battery 123 provides an alternate electricity source forthe real time clock and the RAM 116 to preserve data stored in the RAMin the case of a power interruption, such as during removal of a primarybattery.

A keypad 124 also provides input to the microprocessor 102. Althoughother possible types of keypads are possible, one type of keypad hasfour buttons and is a membrane-type of keypad, which provides resistanceto water and other environmental conditions. The keypad 124 containssoft keys for which the function of the keys can change as a userexecutes different menu selections and commands.

An audio bolus button 125 provides a further input to the microprocessor102. The audio bolus button 125 enables a bolus, such as a correctionbolus or meal bolus as described herein, corresponding to a specificaudible sound. In a possible embodiment, various potential audio bolusamounts correspond to unique audible sounds configured to allow a userto program the audio bolus without requiring the user to visuallyreference the pump screen 106.

Other inputs into the microprocessor 102 include a pressure sensor 126,which is sensitive to the pressure within a reservoir of insulin; acartridge sensor 128, which is sensitive to the presence of an insulincartridge; and a motion detector 130, which detects motion of a gear(not shown) in the drive mechanism 112. The pressure sensor 126,cartridge sensor 128, and motion detector 130 are described in moredetail in U.S. patent application Ser. No. 10/086,646, which is entitledCartridge and Pump With Axial Loading, the disclosure of which wasincorporated by reference above.

Referring to FIG. 2, the pump 100 is packaged in a housing 132. Thekeypad 124 is positioned on a first portion of the housing 132, and thescreen 106 is positioned on a second portion of the housing 132.Additionally, the screen 106 has two portions, a display portion 134 anda template portion 136. A user interface is presented in the displayportion 134 of the screen 106.

The template portion 136 provides a template that indicates the functionassigned to each of the keys on the keypad. In the embodimentillustrated in the drawings, the keypad 124 has a first function key 138and a second function key 140, and an up key 142 and a down key 144. Theup and down keys 142 and 144 are for scrolling or spinning throughoperating parameters that are presented in a spin box associated with afield or between pages present within a user interface such as the homepages as described below. Additionally, a first portion 146 in thetemplate identifies the function assigned to the first function key 138,and a second portion 148 identifies the function assigned to the secondfunction key 140. If a variable or menu selection can be scrolled up ordown, a corresponding center portion 150 of the template presents one orboth of an up arrow corresponding to the scroll direction of the up key142, and a down arrow corresponding to the scroll direction of the downkey 144.

B. Home Page

In one possible embodiment, the insulin pump 100 is controlled by amenu-driven application program that is stored in the ROM 118 andexecuted by the processor 102. The application program also isparameter-driven in that the outcome or steps executed by the variousapplication programs depend on the operating parameters set by the user.Examples of outcomes and steps that depend on the operating parametersinclude delivery rates, delivery schedules, delivery amounts, thegeneration and presentation of menus, and the like.

Referring still to FIG. 2, the application program presents a home page152 in the display portion 134 of the screen 106. The home page 152includes a first icon 154 that illustrates the amount of insulinremaining in the insulin cartridge. This first icon 154 has the shape ofa syringe and a bar 156 arranged relative to the syringe shape toillustrate the amount of remaining insulin. The amount of remaininginsulin also is quantified and listed below the first icon 154. A secondicon 158 has the shape of a battery and has a bar 160 arranged relativeto the battery-shape to illustrate the amount of remaining battery life.The percentage of remaining life on the battery is positioned below thesecond icon 158.

In one possible embodiment, the home page 152 presents the currentstatus 162 of the insulin pump's 100 operation. In the example set forthin the illustration, the insulin pump 100 is delivering insulin at arate of 1.15 units per hour according to a first basal schedule. Thehome page 152 also presents the name 166 of the active delivery programit is executing and personal information 168 as programmed by the user.In the illustrated example, the personal information it displays is abanner “Mary's Pump,” which identifies the owner of the insulin pump100. Other examples of information that might be included in thepersonal field includes medical information about the pump user similarto that information included on a medical alert bracelet such asallergies and the fact that the patient is diabetic, more detailedinformation about the patient including the patient's full name,telephone number, and address, detailed information about the user'scaregiver such as the name and telephone number of the user's physician,and a warning that the pump 100 is an insulin pump and should not beremoved from the user.

Furthermore, the pump 100 can be configured to present more than onehome page. In this embodiment, the user scrolls through the home pagesusing the up and down keys 142 and 144. For example, other home pagesmight include the date, time, and amount of the last bolus delivered bythe insulin pump; contact information about the patient's caregiver;medical information about the patient such as a list of the user'sallergies, a warning that the user is a diabetic, and a warning that thepump is an insulin pump and should not be removed.

The pump 100 displays an icon 170 in the home page 152 to identify thedisplayed page as the home page. Additionally, the icon 170 can includea page number to indicate which home page is currently being displayed.One possible shape for the home page icon is an icon having the shape ofa house.

C. Main Menu

Referring to FIG. 3, the user accesses a main menu 190 by activating amenu function 192 assigned to the second function key 140. The insulinpump 100 then displays the main menu 190, which includes a plurality ofmenu items that the user can select for setting operation parameters andperforming various tasks as described herein. In one possibleembodiment, the menu items in the main menu are Basal Programs, NewCartridge, History, and Pump Settings. In other possible embodiments,the main menu 190 can be customized to include other menu items such asCorrection Bolus, Temporary Rate, Meal Bolus, and others. Furthermore,the user can customize at least some of the labels for various menuitems in both the main menu 190 and submenus.

The New Cartridge menu item is selected to access the cartridge orsyringe of insulin loaded in the pump 100. In one possible embodiment,selecting the New Cartridge menu item automatically sequences the userthrough the steps of loading the new cartridge, priming the tubing forthe infusion set, priming the cannula, and setting the site reminder, ifthe display site reminder is enabled. The site reminder is discussedbelow in more detail. In yet another embodiment the user willaffirmatively acknowledge each of these steps by pressing apredetermined key, either the first or second function keys 138 or 140on the keypad 124, at the conclusion of each step, which causes the pumpto index to the next step. After sequencing through each of these steps,the pump 100 prompts the user to enter an instruction whether to resumedelivery of insulin.

Accessing the cartridge is discussed in more detail in U.S. patentapplication Ser. No. 10/086,646, entitled Cartridge and Pump With AxialLoading, the disclosure of which was incorporated by reference above.

The user selects the desired menu item by using the up and down keys 142and 144 until the desired menu item is highlighted or otherwise marked.The user then activates the highlighted menu item by activating a selectfunction 194 assigned to the second function key 140.

By selecting the Pump Settings menu item, the pump brings up a PumpSettings submenu 196 of several submenu items, including Time and Date,Beep/Vibrate, Program Lock, and Personalize. The Time and Date menuoption is selected to set the time and date of the clock. This time anddate is set in real time. When the Time and Date menu option isselected, the screen displays the time and date, and focus is placed onthe hour field 198. The user scrolls through values for the hour untilthe desired value is set. The user then activates a next function 200assigned to the second function key 140 to index through the remainingfields for the time and date (e.g., the minute field 202, the am/pmfield 204, the month field 206, the day field 208, and the year field210) and set the desired values for each of these fields. The user exitsthe Time and Date function at any time by activating the Done function212 assigned to the first function key 138. Activating the Done function212 saves the current time and date settings and returns the pump to thePump Settings submenu 196.

D. Beep/Vibrate

Referring to FIG. 4, to configure an alarm function to generate eitheran audible or vibratory signal, the user selects the Beep/Vibrate menuoption within the Pump Settings submenu 196. The pump 100 then indexesto the next user interface and places focus on a choose-alert field 214.The user scrolls to the desired beep setting or vibrate setting andselects that setting by activating the Next function 200 to select thedesired setting. If the Beep setting is selected, focus changes to abeep-volume field 216 and the user scrolls to and selects the desiredvolume level. In one possible embodiment, the volume levels from whichthe user can select are low, medium, and high. Other embodiments use anumbered volume scale, labels such as indoor and outdoor, and the like.Upon selecting the desired volume level, the alert and volume settingsare saved and the Pump Setting submenu 196 is displayed on the screen106. If the user selects vibrate in the choose-alert field 214, the pump100 will return directly to the Pump Setting submenu 196.

E. Navigation Sounds

Audible sounds generated by the pump 100 provide assistance to the userin navigating through the pump menus. The audible sounds provide amethod by which a user need not rely on visually observing the pumpscreen while programming the pump. Such a feature can be used byvisually impaired users, or users who do not wish to otherwise visuallyconfirm the pump settings. In various embodiments of the pump 100, thesounds indicate the current screen displayed by the pump, and alsosignify buttons depressed on the pump or other pump events.

The pump 100 uses the home screen 152 as a basis for navigating throughthe pump menus by providing a unique audible sound, such as a beep of aunique pitch as compared with other sounds made by the pump. Additionalhome screens and menu screens programmed into the pump are associatedwith beeps of varying pitches. For example, the home screen 152 isassociated with a first sound, which is emitted when the pump firstdisplays the home screen, as well as each time a user navigates back tothe home screen. The main menu 190 is associated with a second sounddifferent from the first sound, and that second sound is emitted eachtime a user navigates to the main menu 190. Additional sounds, differentfrom the first and second sounds and also different from each other, areassociated with other home pages and menu screens as described herein.In one embodiment, the pump emits a sound of a specific pitch upondisplay of one or more optional setup screens. Associating a sound withan optional screen notifies the user that they are outside the typicalpump programming screens. For example, the pump 100 can emit the soundupon display of a correction bolus screen, a basal rate confirmationscreen, or some other unannounced screen displayed by the pump.

Some screens programmed into the pump revert back to a home screen aftera predetermined period of time elapses. A user relying on sounds tonavigate through the screens will want to know when this occurs. Forsuch screens, the pump 100 can emit a second sound which is either thesame as or different from the first sound associated with the screen soas to signify that such a reversion will take place. In one embodiment,the pump 100 emits three sounds thirty seconds before the reversiontakes place. In such an embodiment, the pump can also optimally emit asingle sound fifteen seconds before the reversion takes place.Additional sounds of varying pitch, length, or occurrence can be used aswell. For example, the same sound can be used for multiple screens, butbe repeated a different number of times to indicate the occurrence ofone screen or the other.

Sounds are also associated with the up and down keys 142, 144 on thepump 100 to assist in setting pump delivery rates, times, and othersettings. A first sound, different from the home screen and menu screensounds described above, is associated with the up key 142. A secondsound, different from this first sound and also different from the homescreen and menu screen sounds, can be associated with the down key 144.The pump emits the first or second sounds when the up key 142 or downkey 144 is depressed, respectively. In one embodiment, the soundassociated with the up key is of a higher pitch than the soundassociated with the down key. In another possible embodiment, the up key142 or down key 144 repeats operation when held in a depressed positionby a user. In this embodiment, the sound associated with the selectedkey 142, 144 repeats for each instance in which operation of the keyrepeats. In a further embodiment, sounds of increasing pitch areassociated with numerical values scrolled through using the up and downkeys, such that lower values are associated with sounds of a lowerpitch, and higher values are associated with sounds of a higher pitch.

When scrolling through a range of values to select a setting in a pump,at least two implementations are possible with respect to the boundariesof each range. In one implementation, pressing the up key 142 at the topof the range will cause the pump value to wrap around, to the lowestvalue in the range. Likewise, pressing the down key 144 at the bottom ofthe range will cause the pump value to wrap around to the highest valuein the range. In a second implementation, pressing the up key 142 at thetop of the range or the down key 144 at the bottom of the range willhave no effect, causing the pump setting to remain at that maximum orminimum value. In an embodiment in which the wrap around implementationis used, a sound is emitted by the pump 100 when either one of the up ordown keys 142, 144 is depressed and the wrap around condition occurs,which is different from the sound emitted when either of the up or downkeys 142, 144 are depressed and the condition does not exist. This soundnotifies a user that the wrap around condition has occurred without theneed for visual confirmation. In an embodiment in which the “wraparound” implementation is not used, a sound is emitted by the pump 100when a user presses the up or down key 142, 144 which is different fromthe normal sound emitted when one of the keys is depressed. This secondsound notifies a user that depressing that key had no effect, again,without the need for visual confirmation. In various additionalembodiments in which either the wrap around implementation is or is notused, the unique sound which occurs at the boundary of the range can bedifferent if at the top of the range or at the bottom of the range. Inother embodiments, additional unique sounds can be used to denote aposition within the range scrolled through. For example, the pump 100can emit a unique sound each time a value is reached that is a multipleof 10. Unique sounds for each multiple of 10, or other notable positionswithin the range can be used as well.

Sounds are further associated with one or more alerts and/or alarmsoccurring in the pump 100. These sounds can be customized so that theuser hears a familiar sound upon occurrence of a specific event oralarm. For example, a missed meal alarm can be associated with a dinnerbell or some other sound. In a possible embodiment, the pump emitssounds, such as numerical values or messages, in Morse code or someother audibly encoded format.

The combination of all of the sounds for the screens, menus, and keysallows a user to program the pump 100 without relying on either visualconfirmation using the pump screen or otherwise having to accuratelycount the number of times which a key is depressed. In a possibleembodiment, one or more of these sound features can be disabled. Forexample, some or all sounds can be disabled if a user selects thevibrate option in the choose-alert field 214 described above.

F. Pump History

Referring to FIG. 5, one possible embodiment of the insulin pump 100tracks historical information related to the pump 100 such as deliveryinformation and other events related to the pump 100. Historicalinformation can be viewed on the screen 106 of the pump 100 or uploadedto a computer as discussed in more detail herein. The pump 100 can becustomized to view historical delivery and event information inindividual history screens or under the History item of the main menu190. Additionally, the pump 100 can display delivery information eitheras individual events or as averages. These alternatives are only some ofthe possible embodiments.

The pump 100 can be programmed to track many different types ofhistorical information, to present the historical information in manydifferent ways, and to provide different ways to access historicalinformation. In one possible embodiment, the historical information thatthe pump 100 tracks includes:

-   -   (1) The aggregate insulin delivered by the pump 100 as well as        the amount of insulin broken down by insulin delivered as a meal        bolus, insulin delivered to counteract estimated carbohydrates        consumed by the user (if the carbohydrate estimator is used),        delivered as a correction bolus, and delivered according to        basal delivery protocols. In various embodiments, the pump 100        will record delivery according to basal delivery protocols as a        total for all basal delivery protocols, or if the pump 100 is        programmed with multiple delivery basal protocols, the delivered        insulin can be broken down by each basal protocol used by the        pump 100. In one possible embodiment, this data is stored as a        daily total and an average daily total for a predetermined        number of days. Additionally, in various embodiments, the        average data can be recorded as actual average values or the        average data can be calculated from the daily totals when        requested for display or upon other requests.    -   (2) The amount of insulin delivered by the pump 100 according to        a basal protocol as a percent of the total insulin delivered by        the pump 100. In one possible embodiment, this data is stored as        a daily percentage and an average daily percentage for a        predetermined number of days. Additionally, in various        embodiments, the average data can be recorded as actual average        values or the average data can be calculated from the daily        totals when requested for display or upon other requests.    -   (3) The date, time, and amount of each bolus delivered.    -   (4) The 500-Rule factor, which is used to estimate the grams of        carbohydrates that are covered by each unit of insulin. To        determine the grams of carbohydrates that are covered by each        unit of insulin, the 500-Rule factor is divided by the total        daily dose of insulin required to maintain the user blood sugar        level in an acceptable range. The typical 500-Rule factor is        500, and hence the ratio is called the 500 Rule. However, the        factor may vary for different types of insulin and from user to        user and the value for the 500-Rule factor is calculated and        stored. In one possible embodiment, the 500-Rule factor is        stored as a daily value depending on the total delivery dose and        an average value for a predetermined number of days. In an        alternative embodiment, the 500-Rule factor is not stored but is        calculated as the 500-Rule factor is required for a display,        calculation, or other function.    -   (5) The 1800-Rule factor, which is used to estimate the drop in        blood glucose for every unit of insulin. To determine the drop        in blood glucose for each unit if insulin delivered to the user,        the 1800-Rule factor is divided by the total daily dose of        insulin required to maintain the user blood sugar level in an        acceptable range. The typical 1800-Rule factor is 1800, and        hence the ratio is called the 1800 Rule. However, the factor may        vary for different types of insulin and from user to user and        the value for the 1800-Rule factor is calculated and stored. In        one possible embodiment, the 1800-Rule factor is stored as a        daily value depending on the total delivery dose and an average        value for a predetermined number of days. In an alternative        embodiment, the 1800-Rule factor is not stored but is calculated        as the 1800-Rule factor is required for a display, calculation,        or other function.    -   (6) The complete history, which in one possible embodiment is        the last 2000 events that are experienced by the pump, including        all daily delivery totals, all alerts, all errors, all battery        changes, all insulin cartridge changes, all changes to the pump        program, and the like. Each record of an event includes the date        and time that the event occurred. In other embodiments, a        predetermined number of events other than 2000 are recorded. In        yet another possible embodiment, the pump 100 records the events        for a predetermined number of days rather than an absolute        quantity, although there might be a limit to the total number of        events that are recorded depending on available memory and other        factors.

In one possible embodiment, as used herein total daily dose, alsoreferred to as Total Daily Dose or TDD, refers to the total amount ofinsulin delivered during a single day including the amount of insulindelivered as a correction bolus. Other embodiments might include theamount of insulin delivered as a correction bolus in the total dailydose of insulin.

To customize how the historical information is displayed on the pump100, the user selects the History menu item from the Personalize submenu222. The pump 100 indexes to a delivery-summary field 264, which isplaced in focus. The user scrolls to and selects the desired yes or novalue. The yes value enables the Delivery Summary menu item in theHistory submenu 290 (FIG. 6), and the no value disables the DeliverySummary menu item in the History submenu 290. Disabled menu items arenot displayed as part of the menu. In one possible embodiment, thedelivery summary displayed under this menu item includes the total dailydose of insulin delivered by the pump 100 as well as the amount ofinsulin broken down by insulin delivered as a meal bolus, insulindelivered to counteract estimated carbohydrates consumed by the user (ifthe carbohydrate estimator is used), delivered as a correction bolus,and delivered according to basal delivery protocols. In an alternativeembodiment, the delivery summary includes the total or aggregate amountof insulin, including insulin delivered as a correction bolus.

Upon selecting the yes or no value in the delivery-summary field 264,focus indexes to an average-delivery-summary field 266, in which theuser scrolls to and selects either a yes value or a no value. The yesvalue enables the Average Delivery Summary menu item in the Historysubmenu 290, and the no value disables the Average Delivery Summary menuitem in the History submenu 290. In one possible embodiment, the AverageDelivery Summary displayed under this menu item includes the averagedaily total for a predetermined number of days for the aggregate insulindelivered by the pump as well as the amount of insulin broken down byinsulin delivered as a meal bolus, insulin delivered to counteractestimated carbohydrates consumed by the user (if the carbohydrateestimator is used), delivered as a correction bolus, and deliveredaccording to basal delivery protocols.

Upon selecting the yes or no value in the average-delivery-summary field266, focus indexes to a basal-as-percent-of-TDD field 268. In onepossible embodiment, basal as a percent of TDD is the amount of insulindelivered by the pump 100 according to a basal protocol as a dailypercent of the total insulin delivered by the pump 100. The user selectswhether to display the Basal as a Percent of TDD menu item in theHistory submenu 290 using a procedure similar to that described for theDelivery Summary. Under this menu item, the pump 100 lists the totaldaily amount of insulin delivered as a basal as a percent of the totaldaily dose of insulin delivered. In an alternative embodiment, the pump100 lists the total daily amount of insulin delivered as a bolus as apercent of the total daily dose of insulin delivered. In variousembodiments, the bolus as a percent can be listed as the meal bolus as apercent of the total daily dose of insulin delivered, correction bolusas a percent of the total daily dose of insulin delivered, or totalbolus as a percent of the total daily dose of insulin delivered. Thepump 100 then indexes focus to an average-basal-as-percent-of-TDD field270. In one possible embodiment, average basal as a percent of totaldaily delivery (TDD) is the amount of insulin delivered by the pump 100according to a basal protocol as an average daily percent over apredetermined number of days of the total insulin delivered by the pump100. The user selects whether to display the Avg Basal as a Percent ofTDD menu item in the History submenu 290 using a procedure similar tothat described for the Delivery Summary. The pump 100 lists the averagebasal as a percent of the total daily delivery under this menu item.

The pump 100 then indexes focus to a bolus-history field 272. In onepossible embodiment, the Bolus History is the date, time, and amount ofeach bolus delivered. The user selects whether to display a BolusHistory menu item in the History submenu 290 using a procedure similarto that described for the Delivery Summary. The pump 100 lists thepump's 100 Bolus History under the Bolus History menu item.

The pump 100 then indexes focus to an edit-display-of-more-history field274. The user scrolls to a yes value or a no value as desired and thenactivates the next function. If the user selects the no value, the pumpreturns to the Personalize submenu 222. If the user selects the yesvalue, the focus indexes to a carbohydrate-ratio field 276 in which theuser scrolls to a yes value or a no value as desired and activates theNext function. Selecting the yes value causes the pump 100 to display aCalc 500 Rule menu item in the history submenu 290 and to display thecalculated carbohydrate ratio. The pump indexes focus to a500-rule-factor field 278 when the user selects yes in the500-rule-factor field 276. The user then scrolls to the desired 500-Rulefactor to use in various calculations and activates the Next function.In one possible embodiment, the potential factors are in the range from400 to 600 in increments of 15. The pump 100 then indexes focus from the500-rule-factor field to an average-carb-ratio field 280. Selecting theno value in the 500-Rule-factor field 276 disables display of the Calc500 Rule menu item in the History submenu 290 and causes the pump 100 toindex directly from the 500-rule-factor field 276 to theaverage-carb-ratio field 280.

Within the average-carb-ratio field 280, the user scrolls to and selectseither a yes value or a no value. If the user selects the yes value, thepump 100 will enable an Avg Calc 500 Rule menu item in the Historysubmenu 290. Under the Avg Calc 500 Rule menu item, the pump displaysthe average carbohydrate ratio for a predetermined number of days. Inone possible embodiment, the pump 100 calculates the averagecarbohydrate ratio for a 7-day period. Upon selecting the yes or novalue, the pump indexes focus to a correction-factor field 282.

In other embodiments, the pump calculates the average carbohydrate ratiofor periods other than 7 days. For example, the range could be in therange from 2 to 90 days. In another possible embodiment, the pump 100calculates the average carbohydrate ratio for however number of days itstores historical data. In yet another embodiment, the user can select apredetermined number of days over which to calculate and average thecarbohydrate ratio.

If the user selects the yes value in the correction-factor field 282,the focus indexes to an 1800-rule-factor field 284. The user thenscrolls to and selects the desired 1800-Rule factor to use in variouscalculations. In one possible embodiment, the potential 1800-Rulefactors are in the range from 1500 to 2200 in increments of 100. Thepump then indexes focus to an average-correction-factor field 286.Selecting the no value in the correction-factor field 282 disablesdisplay of the Calc 1800-Rule menu item in the History submenu 290 andcauses the pump to index directly from the correction-factor field 282to the average-correction-factor field 286.

Within the average-correction-factor field 286, the user scrolls to andselects a yes value or a no value. If the user selects the yes value,the pump 100 will enable the Avg. Calc 1800 Rule menu item in theHistory submenu 290. Under the Avg; Calc 1800 Rule menu item, the pump100 displays the average correction factor for a predetermined number ofdays. In one possible embodiment, the pump 100 calculates the averagecorrection factor for a 7-day period. Upon selecting the yes or novalue, in the average-correction-factor field 286, the pump indexesfocus to a complete-history field 288.

In other embodiments, the pump calculates the average correction factorfor periods other than 7 days. For example, the range could be in therange from 2 to 90 days. In another possible embodiment, the pump 100calculates the average correction factor for however number of days itstores historical data. In yet another embodiment, the user can select apredetermined number of days over which to calculate and average thecorrection factor.

Within the complete-history field 288, the user scrolls between either ayes value or a no value. The user selects yes to enable a CompleteHistory menu item in the History submenu 290 and selects the no value todisable the Complete History menu item. Upon selecting either the yes orno value, the pump returns to the Personalize submenu. Under theComplete History menu item, the pump displays the complete body ofhistorical information stored in RAM 116.

Referring now to FIG. 6, viewing historical information about the pump100 is accomplished through the main menu 190. The user activates theMenu function 174 to access the main menu 190. Within the Main Menu 190,the user selects and activates the History menu item. The pump thenindexes to the History submenu 290 that lists the historical informationthat is available to view on the pump 100. As described above, thehistorical information that is available, depending on the setting madewithin the History item of the Personalize submenu 222 as describedabove, are Delivery Summary, Avg Delivery Summary, Basal as a Percent ofTDD, Avg Basal as a percent of TDD, Calc 500 Rule, Avg Calc 500 Rule,Calc 1800 Rule, and Avg Calc 1800 rule.

If the user selects Delivery Summary, the pump indexes to a DeliverySummary 292 that has a date field 294 in which the current date islisted and a Total field in which the total number of insulin unitsdelivered is listed, a Meal Bolus field in which the number of insulinunits delivered as a meal bolus is listed, a Carbs field in which thetotal number of carbohydrates that the user entered as an estimate ofcarbohydrate consumption is listed, Corr. Bolus field in which the totalnumber of insulin units delivered as a correction bolus are listed, anda Basal field in which the total number of insulin units deliveredaccording to the basal protocols employed by the pump are listed.

The user can scroll through dates in the date field 294 and see thishistorical information for dates other than the current date. In onepossible embodiment, the user can scroll through the seven differentdates, including the current date and the six previous dates. When theuser scrolls to a different date, the pump automatically updates thehistorical delivery information relating to delivery that occurred onthe date now listed in the date field. In an alternative embodiment, theuser can scroll through the previous 90 days of data. In yet anotherpossible embodiment, the user can scroll through however many days ofdata are stored on the pump 100.

If the user selects the Avg Delivery Summary menu item in the Historysubmenu 290, the pump 100 indexes to a display 296 entitled “7 DayAverage,” 293 and displays the same fields (Total field, Meal Bolusfield, Carbs field, Con. Bolus field, Basal field) as the DeliverySummary display 292. However, rather than daily totals, the fieldspresent that average number of insulin units delivered over apredetermined number of days. Additionally, in place of the date field294, the screen for the Avg Delivery Summary presents an avg-over field298, which contains the number of days for which the historical data isbeing averaged. The user can change the number of days by scrolling upor down using the up or down keys, respectively. In one possibleembodiment, the number of days that can be averaged are in the rangefrom 2-30. In another possible embodiment, the number of days that canbe averaged are in the range from 2-90 days. In yet another possibleembodiment, the number of days that can be averaged are in the rangefrom 2 days to however many days of historical data are stored on thepump 100. After scrolling to a new number of days to average, the useractivates an Update Function 300 and the pump 100 recalculates theaverages.

If the user changes the number of days over which the average data iscalculated, the title “7 Day Average” 293 changes to “X Day Average,”where X is the selected number of days over which the data is averaged.

If the user selects the Basal as % of TDD item menu from the Historysubmenu 290, the pump 100 will display a “Basal as % of TDD” display(not shown) and present the percent of total insulin delivered by thepump according to the basal delivery protocols on any given day. TheBasal as % of TDD display will present a date field in which the usercan change the day for which the historical information is presented ina manner similar to the Delivery Summary display 292 as described above.

If the user selects the Avg Basal as % of TDD item menu from the Historysubmenu 290, the pump 100 will display an “Avg Basal as % of TDD”display (not shown) and present the average percent of total insulindelivered by the pump 100 according to the basal delivery protocols fora predefined number of days. The Basal as % of TDD screen will displayan avg-over field 298 in which the user can change the number of daysfor which the historical information averaged in a manner similar to the7 Day Summary display 296 as described above.

If the user selects Calc 500 Rule, the pump will index to a “CarbRatio—500 Rule” display and present a table of information. In each rowof the table, the pump will list a date and the calculated carbohydrateratio for that date. The carbohydrate ratio is calculated by dividingthe 500-Rule factor by the total number of insulin units delivered forthat day. In one possible embodiment, the pump 100 will calculate andlist the carbohydrate ratio for 30 days and the user can scroll throughthose values using the up and down keys. However, other embodiments willcalculate and list the carbohydrate ratio for any other number of days.

If the user selects Avg Calc 500 Rule, the pump 100 indexes to an “AvgCarb Ratio—500 Rule” display. The pump 100 calculates and presents theaverage carbohydrate ratio for a predetermined number of days. The “AvgCarb Ratio—500 Rule” display includes an avg-over field 298 in which theuser can change the number of days for which the average carbohydrateratio is averaged in a manner similar to the “Avg Delivery Summary”display as described above.

If the user selects Calc 1800 Rule, the pump 100 will index to a“Correction Factor—1800 Rule” display and present a table ofinformation. In each row of the table, the pump 100 will list a date andthe calculated correction factor for that date. The correction factor iscalculated by dividing the 1800-Rule factor by the total daily dose ofinsulin required to maintain the user blood sugar level in an acceptablerange. In one possible embodiment, the pump 100 will calculate and listthe correction factor for 30 days and the user can scroll through thosevalues using the up and down keys 142 and 144. However, otherembodiments will calculate and list the correction factor for othernumbers of days.

If the user selects Avg Calc 1800 Rule, the pump 100 indexes to an “AvgCorrection Factor—1800 Rule” display. The pump 100 calculates andpresents the average correction factor for a predetermined number ofdays. The Avg Correction Factor—1800 Rule screen includes an avg-overfield 298 in which the user can change the number of days for which theaverage correction factor is averaged in a manner similar to the “AvgDelivery Summary” display as described above.

G. Basal Rate Test

In an exemplary embodiment, the insulin pump 100 performs basal testingto determine a proper basal rate for a user of the pump. The basal ratefor a pump is the rate at which the pump delivers insulin to a user, andin the exemplary embodiment correlates to the rate at which, independentof meals, the user requires insulin for normal metabolism, based on theuser's particular metabolic need for insulin. The user's metabolic needfor insulin is determined by testing under a controlled set ofcircumstances. Basal rate testing aborts under a number ofcircumstances, for example due to delivery of a correction bolus or ameal bolus as described herein. Also, unusual insulin levels, such aslevels falling very far outside of a safe range, can cause interruptionof a basal rate test or invalidation of test results for user safetyreasons. A blood glucose level that is too high or too low is unsafe tothe tested user and will cause the pump 100 to abort the basal ratetest. Likewise, an initially high or low blood glucose level or highlevel of insulin on board can prevent the start of a basal rate test.Prior to and during the basal rate tests, the pump 100 notifies a userof proper behaviors for a basal rate test, as well as behaviors whichcan cause test failure, such as eating or delivering a correction bolus.

As described in more detail herein, the basal rate test is performed bymeasuring the user's blood glucose level at least at the beginning andend of a defined time period. The data representing the measured bloodglucose levels and the time at which they were measured can be presentedin different formats such as a table or graph.

If the difference between the beginning and ending blood glucose levelsfalls outside a predetermined range, the user's body is not usinginsulin at the same rate at which the pump is delivering it and the usercan adjust the basal rate accordingly. Since a user's basal insulinneeds can vary from hour to hour, the blood glucose level also can bemeasured at different points throughout the test and compared to thebeginning blood glucose level. A difference between any of theseintermediate blood glucose levels and the beginning blood glucose levelalso can indicate that the basal rate needs adjustment. In possibleembodiments, this process can be performed iteratively until thedifference between the beginning and ending blood glucose levels arewithin a desired range.

Since a user's basal insulin needs can change over time (weight gain orloss, change in fitness level, etc), basal rate testing may be performedperiodically by users of the pump to ensure that the proper basal rateis programmed into the pump for basal delivery, discussed below. Thebasal testing, in general, enables four sets of scheduled alarms todefine a basal test. Each set of alarms corresponds to a time segmentduring the day in which a user may want to check their basal delivery.For example, the set of alarms can represent times before or aftermeals, or at other times during a day, week, or other time period.

Referring now to FIG. 7, an exemplary implementation initiating a basaltest process is shown. The pump 100 displays a basal test submenu 281,which is reached from the main menu 190. The basal test submenu 281displays a basal test option listing, which includes a “Start Test”option, a “Set up Test” option, and a “Test History” option. The StartTest option allows the user to initiate a basal test according to thecurrent settings in the pump, and is only visible when no other basaltest has been started. The Set up Test option allows a user to set upbasal test options, and is discussed in greater detail in conjunctionwith FIG. 8, below. The Test History option displays a test history froma currently executing or formerly executed basal test. An example of abasal test chart generated from basal test history data is shown in FIG.9. Using the up and down keys 142, 144, the user chooses one of theoptions displayed on the basal test submenu 281 and chooses a selectoption 283. In the embodiment shown in FIG. 7, the Start Test option isselected as described.

Upon selection of the Start Test option, the pump 100 displays a startbasal test screen 285. The start basal test screen 285 allows the userto confirm that a basal test is intended, and may display one or moremessages to the user. The messages can include information about thebasal test, about activities to avoid during the basal test, or otherrelated information. The user confirms that a basal test is intended byselecting a continue option 287. If the basal test is not intended, aback option returns to the basal test submenu 281.

When the user confirms that a basal test is in fact intended, the pump100 displays a basal test timing screen 289. The basal test timingscreen 289 displays options for various predefined basal tests, such asan overnight basal test, a daytime basal test, or an evening basal test.The daytime basal test can be, for example, a morning basal test or anafternoon basal test. In the example shown, the overnight basal test isselected using the up and down keys 142, 144 and the continue option287.

Upon selection of the desired basal test, the pump displays a listing291 of reminder alerts which will be activated to guide the user throughthe basal testing process associated with that basal test. The reminderalerts represent times during the basal test process at which the useris prompted to enter their current blood glucose level. The reminderalerts can be, for example, times of the day. The listing 291 ofreminder alerts can be editable by the user, so as to change the timesof the day at which the reminders occur, or to change the number ofreminders, as shown below in FIG. 8.

A start option 295 initiates the basal test. In the embodiment shown, auser can start a basal test at any time. However, the pump 100 onlyenters the basal testing state upon the occurrence of the firstprogrammed reminder alert. Upon initiation of the test, the pump canoptionally present one or more prompts or informational screens to theuser to assist the user in running the basal rate test. The pump canadvise the user as to optimal methods for performing the basal ratetest, such as not eating for two hours prior to the test. In onepossible embodiment, the one or more prompts includes a series ofquestions presented to the user prior to initiation of the test. Thequestions can be related to the user's health or sickness, activity orexercise level, stress levels, and variations of these factors fromtheir normal levels. Other questions can be asked as well. In responseto the answers provided by a user, the pump 100 may optionally displayguidelines for taking a basal rate test or suggest postponement of thebasal rate test. The questions and responsive answers can be included ina report, such as the one discussed below in conjunction with FIG. 9.

When the reminder alert occurs, the pump 100 prompts the user to testtheir blood glucose and input the blood glucose reading into the pump.Optionally, the user can select a snooze option to delay the bloodglucose test by 15 minutes. The user can repeat selection of the snoozeoption indefinitely.

Referring to FIG. 8, the insulin pump 100 provides informational andcontrol features related to a basal test. The screens shown in FIG. 8are available to a user whether or not a basal test is in operation. Inthe example shown, the information is relates to an overnight basaltest.

A basal test submenu 281′ corresponds to the basal test submenu 281 ofFIG. 7, but includes options related to the currently executing basaltest. Basal test submenu items include the current test status, end thecurrent test, set up testing, and test history. Additional submenu itemsare possible as well.

If the user selects the current test status option, the pump 100 indexesfocus to a test status screen 297. The test status screen 297 displaysinformation related to the currently scheduled test. The information caninclude the time remaining in the test, the time of the next reminderalarm, and other information. A back option returns focus to the basaltest submenu 281′.

If the user selects the end the current test option from the basal testscreen 281′, the pump 100 indexes focus to an end test screen 299. Theend test screen 299 asks the user to confirm that ending the test beforeits completion is intended. An end option 301 on the end test screen 297confirms that the test should be aborted. A back option returns focus tothe basal test submenu 281′.

If the user selects the set up testing option, the pump 100 indexesfocus to a test setup screen 303. The test setup screen 303 includesnavigation options to allow the user to set up a basal test and also toallow the user to set threshold blood glucose levels at which the basaltest will be aborted. The user selects one of the listed tests, shown inscreen 303 as “Overnight test”, “Daytime test” and “Evening test”. Uponselecting one of the tests, a blood glucose limit screen 305 providesthe user with an interface for defining high and low threshold values,307, 309. The user selects and edits the high and/or low threshold value307, 309 using the up and down arrow keys 142, 144. A next optionconfirms the settings of the threshold values 307, 309, and causes thepump 100 to index focus to a basal test timing screen 287′.

The basal test timing screen 287′ corresponds to the basal test timingscreen 287 of FIG. 7, but relates to the currently selected basal test.The basal test timing screen 287′ presents a list of reminder alarmsrepresented by times of the day at which those alarms occur. The basaltest timing screen 287′ also presents additional information, such asthe number of blood glucose tests to be performed over the course of thebasal rate test, and the total elapsed time of the test. An edit option311 allows a user to selectively edit the reminder alarms. Uponselection of the edit option 311, the pump 100 indexes focus to a basaltest edit screen 315, which allows the user to edit the blood glucosethresholds included in the basal test. The user selects an existingreminder alarm using the up and down keys 142, 144, and a next optionactivates the alarm for editing using the up and down keys.

Default tests reside within the pump 100 and are customizable by a user.In one embodiment, the overnight test includes reminder alerts at 8:00p.m., 11:00 p.m., 3:00 a.m., and 7:00 a.m. The daytime basal testschedule includes reminder alerts at 9:00 a.m., 12:00 p.m., 2:00 p.m.,and 4:00 p.m. The evening basal test schedule includes reminder alertsat 3:00 p.m., 6:00 p.m., 9:00 p.m., and 12:00 a.m. Other times arepossible as either default or customized tests as well. In oneembodiment, the pump 100 does not allow editing of a basal test whilethe test is in progress.

The basal test terminates upon detection of any of a number ofconditions. These conditions include determination that the user'scurrent blood glucose value is outside of the range defined by the highand low threshold values, initiation of a meal bolus, initiation of acorrection bolus, changing the insulin cartridge associated with thepump, changing the basal pattern, or initiation of a temporary basalrate.

If the user selects the test history option, the pump 100 indexes focusto a test selection screen 319. The test selection screen 319 promptsthe user to select the type of test for which to review the testhistory. A test listing 323 within the test selection screen 319displays the programmed tests and corresponding radio buttons, allowingthe user to select one of the tests by using the up and down keys 142,144. The test types include the types of tests executable by the pump,such as an overnight test, daytime test (such as a morning or afternoontest), or evening test. Each test differs by the timing of the set ofreminder alerts associated with the test. Upon user selection of one ofthe types of tests, the pump 100 indexes focus to a test data screen 325which displays one or more of the tests of that type which have beenperformed by the pump. In one embodiment, the pump 100 displays datarelated to the last three instances in which the test was run. In apossible embodiment, the data includes the date, the time, and theuser's blood glucose level at the time of the last blood glucose test.

Referring to FIG. 9, an exemplary chart graphically displaying threedifferent hypothetical examples of executed overnight basal tests isshown. The chart displays the time of day along the horizontal axis, andthe user's blood glucose level along the vertical axis. First, second,and third data sets 327, 329, and 331 represent separate hypotheticalovernight tests, and include data points at alarm times of 8:00 p.m.,11:00 p.m., 2:00 a.m., 3:00 a.m., and 4:00 a.m., which are, for example,set in the basal test timing screen 307 of FIG. 8. First data set 327includes only the first three data points, because at 2:00 a.m. the pump100 detected a blood glucose level above the accepted range for thetest, and the test aborted. Second data set 329 represents asuccessfully completed test. Third data set 331 includes five datapoints, but did not complete operation due to detection of a bloodglucose level below the accepted range for the test, resulting incanceling of the test. Upon detection of a blood glucose reading outsidethe threshold range programmed into the pump 100, the pump displayseither an alert indicating that the user's blood glucose is either toohigh or too low. The pump 100 optionally instructs the user to followphysician's instructions to remedy the abnormal blood glucose value. Forexample, a user executing a basal rate test resulting in the first dataset 327 might be instructed to increase the basal insulin rate for asubsequent test. Conversely, a user executing a basal rate testresulting in the third data set 331 might be instructed to decrease thebasal insulin rate for a subsequent test. In a possible embodiment, thepump 100 graphically displays the suggested adjustment to the user'sbasal profile. Displaying the change in the user's basal profile canshow the user the effect of the changed basal rate on blood glucosevalues.

Referring back to FIGS. 7-9, in one embodiment the basal test processcannot be completed simultaneously with the application of a correctionbolus or other non-basal rate effect caused by the pump 100. Events thatcause the basal test to terminate include a correction bolus, a mealbolus, changing the insulin cartridge, disabling the threshold values,or editing the basal pattern. Additional options can abort the basaltest as well.

In one possible embodiment of pump 100, the basal rate testing isperformed by prompting a user to input blood glucose values at scheduledtimes during the test. In an alternate embodiment, the pump 100communicatively links to a blood glucose sensor. In such an embodiment,the pump 100 optionally requests blood glucose level information fromthe blood glucose sensor at various times during the test. The varioustimes during the test can include the scheduled times during whichmanual or automated blood glucose test result entry would be expected,and can also include a periodic request to a blood glucose sensor. Forexample, the periodic request can occur every ten minutes or some otherperiod, and may be a user-selectable period. The pump 100 would receivethe most recent test result obtained by the blood glucose sensor. Inembodiments including a communicative link to a blood glucose sensor,the user need only be interrupted when an abnormal blood glucose levelis detected so that appropriate corrective action is taken

H. Basal Rate Delivery

Referring to FIG. 10, the insulin pump 100 can deliver insulin eitheraccording to a basal rate or as a bolus. In one possible embodiment, thepump 100 can deliver insulin according to four different basal deliveryprograms. To customize the basal delivery programs, the user accessesthe Personalize Delivery submenu 222.

Selecting the Delivery menu item in the Personalize submenu 222 causesthe pump to index to a Personalize Delivery submenu 302 in which theuser can select the type of bolus or basal delivery protocol to edit.Selecting the Basal Program menu item causes the pump 100 to index amaximum-basal-rate field 304, which is placed in focus. Within themaximum-basal-rate field 304, the user scrolls to and selects thedesired maximum basal rate. In one possible embodiment, the maximumbasal rate values are in the units of u/hr and the user can scrollthrough values in the range from 0.5 u/hr to 36 u/hr in increments of0.5 u/hr. When the desired maximum basal rate is selected, focus indexesto a review/edit-basal-programs field 306 in which the user selectseither a yes or a no value. If the user selects the no value, theinsulin pump 100 returns to the Personalize Delivery submenu 302.

If the user selects the yes value, the pump 100 indexes to a display 308entitled “Select Program” and lists the name 310 for each of the basalprograms, Basal 1, Basal 2, Basal 3, and Basal 4. A check box 312 isalso displayed next to each name 310 for the basal delivery programs. Ifa Basal program is enabled, the check box 312 next to its name is set.If a Basal program is not enabled, the check box 312 next to its name iscleared. The name 310 of each enabled basal-delivery program isdisplayed as a menu item in the Basal Programs submenu 318 (FIG. 12) andthe user can selectively activate the enabled programs.

To enable or disable a basal program, the user scrolls to the desiredbasal program and activates the Edit function 254. The pump 100 indexesto a display 313 entitled “Basal 1,” where “Basal 1” is the name of thebasal program being edited. The display has two fields, an enable field314 and a name field 316. Within the enable field 314, the user selectseither a yes value or a no value. If the user selects the no value, thepump 100 disables the basal program associated with the screen 313(Basal Program 1 in the illustrated example) and returns to the SelectProgram display 308. The check box 312 for the disabled program iscleared. In one possible embodiment, if the pump 100 is actuallyexecuting the basal program that the user attempts to disable, the pump100 will not disable the program and will present an error messagestating, “You may not disable the active program.”

If the user selects the yes value in the enable field 314, the pump 100indexes focus to the name field 316. Within the name field 316, the usercan assign a custom name to the basal delivery program. In one possibleembodiment, the user can scroll through names that are preloaded intothe pump 100. Examples of names might include Weekday, Weekend, SickDay, Travel, Monthly, and the generic names such as Basal 1, Basal 2,etc. When the user has scrolled to the desired name, the user activatesthe Next function and the pump 100 returns to the Select Program display308. The check box 312 for the program that was just edited is set toindicate that the basal program is enabled. Additionally, the nameselected in the name field 316 is displayed in the Select Programdisplay 308 in place of the previously assigned name. The name selectedin the name field 316 is also displayed as a menu item in the BasalPrograms submenu 318.

The user repeats this procedure from the Select Program display 308 foreach basal program 310 for which he or she desires to change the enabledstate and/or name. When the user is done changing the enabled states andprogram names for the various basal programs 310, the user activates theDone function 212. The pump 100 then returns to the Personalize Deliverysubmenu 302. As described below, the names of the enabled basal deliveryprograms will then appear the Basal Programs submenu 318.

In an alternative embodiment, within the display entitled “My ProgramX,” the user can access a spin box in which they scroll through a listof optional names and select a custom name for the enabled basaldelivery programs. The selected name would then replace the generic name(e.g., Basal 1, Basal 2, Basal 3, and Basal 4 in the illustratedexample) for the program associated with the display. Examples ofoptional names that might be loaded in the pump 100 include weekday,weekend, sick, and monthly (which is to designate a basal deliveryprogram set for a woman's menstrual cycle).

Referring now to FIG. 11, the user can edit the operating parameters forthe delivery protocols assigned to each of the enabled basal programs.From the main menu, the user selects the Basal Programs menu item. Thepump then indexes to a Basal Programs submenu 318 that lists those basalprograms 317 that have been enabled as menu items. Each Basal Deliveryprogram listed in the submenu 318 is identified by the name assigned tothat particular program (e.g., Basal X, Weekend, Weekday, Sick Day,Travel, Monthly). In the illustrated example, all four basal programsare enabled and identified by the generic name Basal X. Additionally,there is button 320 next to each of the menu items (names for theenabled basal programs). The buttons 320 associated with the activebasal program are set, and the buttons for the other basal deliveryprograms are cleared.

To edit a basal program, the user scrolls to and selects the desiredbasal program. The pump 100 indexes to a submenu 322 for which the titleis the same name as the selected basal program. The menu has two menuitems, an Edit menu item and a Start Using menu item. The user selectsthe edit menu item and the pump 100 indexes to a Summary user interface324 that presents a table in which each row identifies a start time 326and a scheduled delivery rate 328 for each time interval in the basalprogram. In the illustrated embodiment, there is a first time interval330 having a start time and a delivery rate, a second time interval 332having a start time and a delivery rate, and a third time intervalhaving 334 a start time and a delivery rate. The start times are listedin a start-time field, and the delivery rates, are listed in adelivery-rate field.

To edit the start times and the delivery rates, the user activates theedit function 254 in the Summary user interface 324 and the pump 100indexes to an Edit user interface 336 and assigns the Done function 212to the first function key 138. Additionally, the pump 100 places focuson the delivery-rate field 340 for the first interval 330. The userscrolls to and selects the desired delivery rate. The user selects thedesired delivery by scrolling to the desired value and activating theNext function 200. In one possible embodiment, the pump 100 scrollsthrough delivery rates in the range from 0 u/hr to 2 u/hr in incrementsof 0.05 units per hour. The delivery rate does not exceed the maximumdelivery rate (FIG. 10, Item 304).

When the desired delivery rate is selected, the pump 100 indexes focusto the start-time field 342 for the second time interval 332. The userscrolls to and selects the desired start time. In one possibleembodiment, the pump 100 scrolls through start times in increments of 30minutes. In one possible embodiment, the start time cannot be earlierthan or equal to the start time of the previous time interval and cannotbe later than or equal to the start time of the next subsequent timeinterval. Other embodiments will implement different scrollingincrements and limitations on the start time that can be selected. Inanother embodiment, if a selected start time is not in sequence, thepump 100 will automatically reposition the delivery intervals so theyare in chronological order.

When the desired start time is selected, pump 100 then indexes focus tothe delivery-rate field 340 for the second time interval 332, which theuser sets using the procedures described above with respect to the firsttime interval 330. The user continues this procedure indexing throughthe start times for each of the time intervals and their associateddelivery rates until the start time for each of the delivery intervalsand their associated delivery rates are set. When the user is finishedsetting and/or editing the start times and delivery rates for thevarious intervals, he or she activates the Done function 212 and thepump 100 returns to the Summary Display 324.

In one possible embodiment, the first time interval 330 always starts at12:00 midnight. In this embodiment, the last time interval willterminate at 12:00 midnight. If, within the Summary Display 324, theuser highlights and selects the first time interval 330 for editing, thepump 100 indexes to the Edit display 336 and initially highlights thedelivery rate 328 for the first time interval 330 rather than the starttime 326. In another embodiment, however, the user can change the starttime 320 for the first time interval 330. The last time interval wouldthen extend until the start time for the first time interval 330.Additionally, within the Summary Display 324, the user can scroll to adelivery interval other than the first interval 330 and activate theEdit function 254. In this situation, the start-time field 342 for theselected interval is initially placed into focus rather than thedelivery-rate field 340.

To add a time interval to the basal program, the user continues to indexthrough all of the time intervals and associated fields until the pumpgenerates a new delivery interval and displays the characters “--:--”344 in the start-time field 342 of the new interval, which occurs afterindexing through the delivery-rate field 340 for the last time interval.The user then scrolls through desired start times for the new timeinterval. After the desired start time is selected, the user activatesthe Next function 200 and the pump 100 indexes to the delivery-ratefield 340 for the new time interval, which the user sets by scrollingthrough available delivery rate values. The user can then activate theNext function 200 to add yet another new time interval or can activatethe Done function 212 to return to the Summary display 324. In oneembodiment, the pump 100 can include up to 48 time segments, althoughother embodiment will include more or fewer time segments.

To delete a time interval from the basal program, the user places thestart-time field 342 for the desired interval into focus and scrollsdown until the time reads “--:--” 344. The user then activates the Nextfunction and the time interval is deleted and the user either activatesthe Next function 200 to index to another time interval for editing oractivates the Done function 212 to return to the Summary display 324.

Additionally, both the Summary user interface 324 and the Edit userinterface 336 include a total field 346 in which the total insulinscheduled to be delivered over a 24-hour period for that basal programis listed. The total insulin scheduled to be delivered is calculated bymultiplying the delivery rate by the length of each time interval tocalculate the total insulin to be delivered for each time interval bythe basal program being edited. The total insulin to be delivered foreach time interval is then summed to calculate the total insulinscheduled to be delivered over a 24-hour period.

Referring to FIG. 12, to begin a basal program the user indexes to theBasal Programs submenu 318 and selects the name of the desired basalprogram. The pump indexes to the Basal X submenu 322 and selects theStart Using menu item. The pump returns to the Basal Programs submenu318 and sets the button 320′ for the newly activated basal program. Thepump 100 also clears the button 320 for the previously active basalprogram.

I. Correction Bolus

In addition to delivering a basal rate the pump 100 may administer abolus to lower the user's blood glucose level. One possible embodimentof the pump 100 can deliver two types of boluses, a correction bolus anda meal bolus. The correction bolus delivers a dose of insulin over andabove the basal rate to lower or correct the user's blood glucose levelif it becomes too high. A meal bolus is a dose of insulin delivered inanticipation of consuming a meal to counteract the effects that the mealmay have on the user's blood glucose.

Referring to FIG. 13, the user can personalize or customize thecorrection bolus program and how the program is presented in the userinterface. To personalize the temporary rate programs, the user accessesthe Personalize Delivery submenu 302.

Selecting the Correction Bolus menu item causes the pump 100 to displaya main-menu field 388, and places it in focus. The user scrolls to andselects either a yes value or a no value. The yes value enables aCorrection Bolus menu item in the main menu 190, and a no value disablesthe Correction Bolus menu item in the main menu 190. Upon selecting theyes or no value, focus indexes to a meal-bolus field 390 in which theuser scrolls to and selects either a yes value or a no value. A yesvalue enables the user to set a correction bolus through the meal bolusdelivery program as described below. A no value disables the ability toset a correction bolus through the meal bolus delivery program.

Upon selecting a yes or no value in the meal-bolus field 390, focusindexes to a units field 392 in which the user scrolls to and selectsunits for measuring blood glucose levels in either mg/dL and mmol/L.Upon selecting the units, focus indexes to a correction-bolus-factorfield 394 in which the user scrolls to and selects a desired correctionfactor. The correction factor is the amount that the user's bloodglucose drops for each unit of delivered insulin. In one possibleembodiment, the user scrolls through values ranging from 5 mg/dL to 200mg/dL (or 0.2 mmol/L to 12 mmol/L). When the desired correction factoris set, focus indexes to a target blood glucose field 393.

Additionally, the pump 100 calculates the average correction value for apredetermined number of days beginning with the previous day andextending backwards in time, and then displays 396 the averagecorrection factor together with the correction-bolus-factor field 394.In the illustrated example, the pump 100 displays the average correctionfactor for the previous seven days. As discussed above, otherembodiments average the correction factor over other periods of time. Inyet other embodiments the user can select the period of time over whichto average the correction factor.

The target blood glucose field 393 allows a user to edit or review thecorrection bolus blood glucose targets. An edit option 395 allows theuser to optionally edit the blood glucose target values. If the userchooses to edit the blood glucose target values, they can optionallychoose to set a constant target blood glucose value, or a variabletarget blood glucose value which changes throughout the day based onexpected meal consumption, activity levels, or other factors. When thedesired blood glucose targets are set or if the user chooses not to editthe blood glucose target values, focus indexes to a correction bolusadder field 397.

The correction bolus adder field 397 sets one or more correction boluschanges within the pump 100. In the field 397 shown, the correctionbolus adder field prompts a user to indicate whether to increase thecorrection bolus delivered by the pump 100 based on the user's currentblood glucose level. An edit option 399 allows the user to optionallycustomize the increase amount for the correction bolus based on bloodglucose. The addition of insulin to the correction bolus can be aconstant amount over a given threshold, can be a graduated increasebased on current blood glucose, or a set of stepped increases in insulinbased on blood glucose. Once one or more of the desired correction bolusadders are set, focus indexes to a duration-of-activity field 398.Within the duration-of-activity field 398, the user scrolls to andselects the duration of time over which insulin remains in the user'sbody. This amount will vary from user to user depending on a variety offactors including physical traits of the user and the type of insulinthat is used. In one possible embodiment, the user scrolls throughdurations in the range from 2 hours to 6 hours. When the duration isset, the pump 100 returns to the Personalize Delivery submenu 302.

In a possible embodiment, a user selects an insulin absorption modelfrom among multiple insulin absorption models for application by thepump 100. Insulin absorption models are used in the pump to determinethe remaining insulin in a user's body a period of time after theinsulin is delivered to t he user, whether by a basal rate, a correctionbolus, a meal bolus, or another insulin delivery method describedherein. To calculate the user's insulin level, the insulin absorptionmodel uses the programmed duration in the duration-of-activity field398. The user optionally selects a linear or non-linear absorptionmodel. A linear absorption model assumes a constant absorption rate ofinsulin into the body. A nonlinear absorption model assumes a fasterabsorption rate with higher insulin levels, and a lower absorption ratewith lower insulin levels. The user optionally also programs a starttime and tail time into the pump 100.

FIGS. 14A-14D show graphical representations of four possible insulinabsorption models which can be set in the pump. The horizontal axis ofthe graphs represents the elapsed time since the last measured insulinon board. The vertical axis represents the insulin on board as apercentage of the total delivered insulin at the time represented by theaxis.

FIG. 14A shows a linear absorption model in which the programmedduration in the duration-of-activity field 398 was set to be 3 hours.The start time and tail time are either not selected or set to be zero.These settings result in a linear decrease in estimated insulin on boardover three hours. The equation to be used to determine the currentinsulin on board (IOB) is:

${{Current}\mspace{14mu} {IOB}} - \frac{{Initial}\mspace{14mu} {Bolus}\mspace{14mu} {Amount}*\begin{pmatrix}{{{Duration}\mspace{14mu} {of}\mspace{14mu} {Activity}} -} \\{{Elapsed}\mspace{14mu} {Time}}\end{pmatrix}}{{Duration}\mspace{14mu} {of}\mspace{14mu} {Activity}}$

For example, if a 3 Unit bolus is delivered using this selected model,at a time one and a half hours later the model estimates that the userhas 1.5 Unit remaining unabsorbed within their body.

FIG. 14B shows a linear absorption model having a non-zero start timeand tail time. In the embodiment shown, the start time is programmed tobe 15 minutes and the tail time is programmed to be one hour. Using thismodel, it is assumed that insulin in a user's body does not decrease forthe first 15 minutes after it is introduced. After that start period,insulin levels are assumed to decrease linearly over the set duration toa point at which approximately 5% of the introduced insulin remains. Atthat point, insulin levels drop to zero (either linearly ornon-linearly) over the designated tail time. The equation used todetermine current insulin on board using this model is:

${{Current}\mspace{14mu} {IOB}} - \frac{{Initial}\mspace{14mu} {Bolus}\mspace{14mu} {Amount}*\begin{pmatrix}{{{Duration}\mspace{14mu} {of}\mspace{14mu} {Activity}} +} \\{{{Start}\mspace{14mu} {Time}} -} \\{{Elapsed}\mspace{14mu} {Time}}\end{pmatrix}}{{Duration}\mspace{14mu} {of}\mspace{14mu} {Activity}}$

Note: During Start up Time, current IOB limited to Initial Bolus Amountuntil the Current IOB reaches 5% of the Initial Bolus Amount. At thatpoint, the equation used becomes:

${{Current}\mspace{14mu} {IOB}} - \frac{0.05*{Initial}\mspace{14mu} {Bolus}\mspace{14mu} {Amount}*\left( \begin{matrix}{{Elapsed}\mspace{14mu} {Time}\mspace{14mu} {Since}} \\{{Tail}\mspace{14mu} {Time}\mspace{14mu} {Started}}\end{matrix}\mspace{14mu} \right)}{{Total}\mspace{14mu} {Tail}\mspace{14mu} {Time}}$

More generally, the tail can be affected by changing the percentage ofinsulin on board at which the tail time occurs. In such an instance, theabove equation becomes:

${{Current}\mspace{14mu} {IOB}} = \frac{\begin{matrix}{{{Tail}\mspace{14mu} {Threshold}\mspace{14mu} \%*{Initial}}\mspace{14mu}} \\{{Bolus}\mspace{14mu} {Amount}*\left( \begin{matrix}{{{Elapsed}\mspace{14mu} {Time}\mspace{14mu} {Since}}\mspace{11mu}} \\{{Tail}\mspace{14mu} {Time}\mspace{14mu} {Started}}\end{matrix}\; \right)}\end{matrix}}{{Total}\mspace{14mu} {Tail}\mspace{14mu} {Time}}$

FIG. 14C shows a non-linear absorption model in which the programmedduration in the duration-of-activity field 398 was set to be 3 hours.The start time and tail time are either not selected or set to be zero.A variety of equations can be used to model the non-linear absorptionmodel, such as an exponentially decreasing, hyperbolic, or otherequation. The following is an example of one possible equation used tomodel non-linear insulin absorption:

$y = ^{- {(\frac{x^{2}{\ln {(20)}}}{T^{2}})}}$

Where

y=Current IOBx=Elapse time

T=Duration of Activity

The method of calculating the current insulin on board remains the same,by determining the amount of insulin on board based on the model byusing the time elapsed since the insulin is delivered into the user'sbody.

FIG. 14D shows a non-linear absorption model having a non-zero starttime and tail time. In the embodiment shown, the start time isprogrammed to be 15 minutes and the tail time is programmed to be 2hours. The start time and tail time are implemented similarly to thosedescribed in conjunction with FIG. 14B, while using the non-linear modeldescribed in conjunction with FIG. 14C.

Additional methods for varying the absorption model can be incorporatedinto the pump 100 as well. A general method for varying insulinabsorption would include incorporation of factors which can affect therate at which the user would actually absorb insulin, such as due toboluses, activity, or other factors. In one example embodiment, the pump100 varies the insulin absorption model based on a bolus amount. In afurther embodiment, the pump 100 varies the insulin absorption modelbased on both a bolus amount and the user's body weight. In a furtherembodiment, the pump 100 varies the insulin absorption model based onthe user's anticipated near-future activity level. Other factors caninclude the user's age, fitness level, body mass index or other userentered health information. In yet a further embodiment, the pump variesthe insulin absorption model based on the ambient temperatureexperienced by the user. In further embodiments, the pump 100 varies theinsulin absorption model based on other patient-specific parameters.

Referring now to FIG. 15, the user delivers a correction bolus byselecting the correction bolus menu item from the main menu 190. Thepump 100 then displays an amount field 400 in which the user enters theamount by which they would like to lower their blood glucose. The userscrolls to and selects the desired amount. The pump 100 then calculatesa recommended bolus and indexes focus to a recommend-bolus field 402.The pump 100 also displays a banner 403 with the recommend-bolus field402 which reads “Bolus to Lower BG X?” where X is the amount that theuser entered to lower his or her blood glucose. The pump 100 calculatesthe recommended bolus according to the equation:

$\begin{matrix}{{{Correction}\mspace{14mu} {Bolus}} = \frac{{Drop}\mspace{14mu} {in}\mspace{14mu} {Glucose}\mspace{14mu} {Level}}{{Correction}\mspace{14mu} {Factor}}} & (1)\end{matrix}$

and displays the recommended correction bolus in the recommend-bolusfield 402. The user can adjust the recommended correction bolus byincrementing the recommend amount up or down using the up and down keys142 and 144, respectively.

When the desired correction bolus is displayed in the recommend-bolusfield 402, the user activates the Deliver function 384 and the pump 100displays a banner 408 in the screen stating the bolus is delivering andthe amount of the bolus. The pump 100 then returns to the home page 152after delivery of the bolus is complete.

Additionally, the pump 100 has a duration of activity program thatdetermines whether any bolus that was previously delivered is stillactive. If a previous bolus is still active, the pump 100 calculates theestimated amount of insulin that is still active in the patient's body.In a linear system the pump uses an equation analogous to the Insulin onBoard equations above:

$\begin{matrix}{{{{Residual}\mspace{14mu} {Insulin}} = \frac{{Last}\mspace{14mu} {Bolus}\mspace{14mu} {Amount} \times \left( \begin{matrix}{{{Duration}\text{-}{Time}}\mspace{11mu}} \\{{Since}\mspace{14mu} {Last}\mspace{14mu} {Bolus}}\end{matrix}\; \right)}{Duration}}\mspace{79mu} {{{{if}\left( {{Duration}\text{-}{Time}\mspace{14mu} {Since}\mspace{14mu} {Last}\mspace{14mu} {Bolus}} \right)} \geq 0},\mspace{79mu} {{{otherwise}\mspace{14mu} {Residual}\mspace{14mu} {Insulin}} = 0.}}} & (2)\end{matrix}$

where Residual Insulin is the amount of insulin from a previous bolusstill active within the user's body, Last Bolus Amount is the amount ofthe last bolus, Duration is the duration of insulin, which is set asdescribed in conjunction with FIG. 13, and Time Since Last Bolus is theamount of time lapsed since the last bolus was delivered. Additionally,there could be more than one boluses still active within the user'sbody. In this situation, equation 2 is used to calculate the residualinsulin from each of the still active boluses and the amount of residualinsulin for each of the previous boluses is summed to determine ResidualInsulin. Alternately, a modified version of equation 2 may be used basedon a non-linear insulin absorption model, if selected.

The pump 100 then calculates an adjusted correction bolus according tothe equation:

Reduced Correction Bolus=Correction Bolus−Residual Insulin  (3)

The pump 100 then displays the reduced recommended corrected bolus inthe correction-bolus field 402 rather than the recommended correctionbolus. The display also presents a banner (not shown) with therecommended-bolus field that indicates that the recommended bolus isreduced to accommodate residual bolus insulin that is still working inthe user's body. An example of such a banner is “*reduced for insulinon-board”.

In an alternative embodiment, when the user selects the Correction Bolusmenu item from the main menu 190, the pump 100 indexes to a display thatpresents the correction factor, displays the user's target blood glucoselevel, and displays a current-blood-glucose field that prompts the userto enter the user's current blood glucose level. The user scrolls to andselects their current blood glucose level. The pump 100 then calculatesthe appropriate amount of the bolus to lower the user's blood glucoselevel to the target value and then presents the verification display. Inthis embodiment, the pump 100 calculates the desired drop in the glucoselevel, and the pump 100 calculates the correction bolus according to theequation:

$\begin{matrix}{{{Correction}\mspace{14mu} {Bolus}} = \frac{{{Current}\mspace{14mu} {Glucose}\mspace{14mu} {Level}} - {{Target}\mspace{14mu} {Glucose}\mspace{14mu} {Level}}}{{Correction}\mspace{14mu} {Factor}}} & (4)\end{matrix}$

In one possible embodiment, the pump 100 varies the correction bolusamount based not only upon the time of day, but also the current bloodglucose of the user. The user can set one or more rules in the pump 100to change the correction factor applied. These rules can be based on arules framework programmed into the pump 100. For example, the pump caninclude an additive rule framework of the form “If blood glucose isabove X, add Y %”. The user could create a number of personalized rulesof the same form, by entering a blood glucose setting and a percentagevalue. For example, by entering 250 and 20%, respectively, the usertells the pump 100 to add 20% to the bolus if the user's blood glucoselevel is over 250. In a possible embodiment, the effect of these definedrules can be added to the correction bolus after it is initiallycalculated using equation (4), above. In a second possible embodiment,the correction factor is altered to take into account whether or not arule applies at the time the correction bolus is calculated.

A plurality of rules can be created in the pump 100 with differingglucose values and percentages. In one possible embodiment, up to fourrules can be programmed into the pump 100. Additionally, the addedinsulin delivered by the pump 100 can be displayed on the pump screen,such as upon selection of the Correction Bolus menu item in the mainmenu 190. These equations can change based on the insulin absorptionmodel selected.

J. Negative Meal Bolus

Similar to the correction bolus, the pump 100 can suggest a negativemeal bolus, which is a suggested amount of carbohydrates for the user toconsume. A negative meal bolus is suggested by the pump when the user'sblood glucose level is too low or potentially will become too low due tothe current level of insulin on board. The negative meal bolus iscomplementary to the correction bolus, and the two operate to maintainthe user's blood glucose level within a safe range.

In a possible embodiment, when the user selects the Correction Bolusmenu item from the main menu 190 and the pump 100 determines that theuser's blood glucose is below the target level, the pump indexes to adisplay that includes a notification message indicating to a user thattheir blood glucose level is below their target blood glucose level. Ina further embodiment, the pump 100 includes a negative meal bolus targetanalogous to the correction bolus target, which is a target level towhich the negative meal bolus is configured to aim. The negative mealbolus target can be a different value from the correction bolus target.For example, the correction bolus target can represent a higher levelwithin a range of safe blood glucose levels, such as 130 mg/dl, and thenegative meal bolus target can represent a lower level within the range,such as 90 mg/dl. In a possible embodiment, the correction bolus targetand negative meal bolus target are user-selectable.

In a possible embodiment, the pump 100 deactivates the negative bolusfeature based on the occurrence of other events within the pump. Forexample, the negative bolus feature can be disabled during an extendedbolus, or for a predetermined or customizable period of time afterdelivery of a meal bolus, as described below.

The negative meal bolus feature allows the pump 100 to optionallydisplay the amount of carbohydrates necessary to bring the user's lowblood glucose back to the target level, consistent with the equationsdescribed above. In an embodiment of the pump 100 incorporating a fooddatabase as described below, the pump optionally displays one or morefoods appropriate for treating low blood glucose which contain at leastthe required number of carbohydrates. In such an embodiment, the pumpalso optionally displays a minimum serving size to be consumed to reachthe required number of carbohydrates.

The pump 100 also optionally displays the user's current blood glucoselevel or the user's target blood glucose level. The pump 100 optionallyexecutes a meal bolus program which, in one aspect, can calculate anddisplay the number of carbohydrates to bring the user's blood glucosefrom its current level to the user's target level. The calculated numberof carbohydrates is editable by the user, although the number entered bythe user may be replaced by the number calculated by the pump 100 if theuser-entered value is lower.

Once the number of carbohydrates is accepted, raised, or lowered by theuser, one of three things may happen. If the user accepts the calculatedbolus, the pump 100 applies a “zero” bolus. If the user lowers thenumber of carbohydrates, the pump 100 displays a message indicating thatthe user's blood glucose would still be below target. If the user raisesthe number of carbohydrates, a meal bolus program, such as thosediscussed below, calculates the amount of insulin necessary tocounteract the extra carbohydrates. This insulin can be delivered to theuser at the time the user selects the number of carbohydrates toconsume, or can optionally delay the insulin bolus for an amount of timesufficient to ensure that the user's blood glucose level increasesquickly back to a normal level. In a possible embodiment, the pump 100delays 15 minutes before delivering additional insulin to allow the usera chance to consume some carbohydrates and raise their blood glucoselevel. In a further possible embodiment, the software prompts the userto perform a blood glucose test to confirm that the bolus is needed. Insuch an embodiment, the software allows the user to confirm or cancelthe bolus as appropriate.

In an embodiment of the pump 100 including a food database, as describedbelow, the pump 100 can display one or more foods that are good to eatwhen blood glucose is abnormal, i.e. too high or too low. Additionally,foods which are well-suited for consumption in anticipation of exerciseor on sick days can be displayed as well. The pump 100 can present to auser a list of foods which are appropriate under other circumstances aswell.

K. Meal Bolus Programs

A meal bolus is a bolus that the pump delivers in anticipation of a mealthat the user plans to consume. In one possible embodiment, the amountof the meal bolus is based on how much insulin is required to workagainst the carbohydrates that the user plans to consume. There areseveral types of meal bolus programs that the pump 100 may include. Onetype is a standard bolus in which the pump 100 delivers the meal bolus apredetermined time prior to when the user consumes the meal or snack.The standard program delivers the bolus at the maximum rate that thepump 100 is able to deliver it. As explained below, the standard programcan be set for programming in either units of insulin or number ofcarbohydrates. Another type of meal bolus that the pump 100 can beprogrammed to deliver is an extended bolus in which the pump 100delivers the meal bolus over an extended period. Yet another type ofmeal bolus that the pump 100 can be programmed to deliver is acombination bolus in which the pump 100 immediately delivers a portionof the meal bolus and the balance of the meal bolus over an extendedperiod of time.

Referring to FIG. 16, to instruct the pump 100 to program the standardmeal bolus in units of insulin and to otherwise personalize the mealbolus program, the user accesses the Personalize Delivery submenu 302.From the Personalize Delivery submenu 302, the user selects the MealBolus menu item and the pump 100 prompts 410 the user to select whetherto program in units of insulin or carbohydrates. The user selects unitsof insulin. The pump 100 then prompts 412 the user to select the maximumbolus that can be delivered. In one possible embodiment, the userscrolls through values in the range between 0 units and 40 units ofinsulin in increments of 1 until the desired value is highlighted. Next,the pump 100 prompts 414 the user to select the increments in which theuser can select the actual bolus to be delivered. In one possibleembodiment, the user scrolls between 0.05 units, 0.10 units, 0.50 units,and 1.00 units.

The pump 100 then prompts 416 the user to select whether to enable anextended bolus program and to display an Extended Bolus menu item withina Meal Bolus submenu 434 (FIG. 18). The extended bolus program isselected by selecting a yes value and disabled by selecting a no value.The pump 100 also prompts 418 the user to select whether to enable acombination bolus program and to display a Combo Bolus menu item withinthe Meal Bolus submenu 434. The combination bolus program is activatedby selecting a yes value and is disabled by selecting a no value. Thepump 100 then prompts 420 the user to choose whether to enable an audiobolus program. The user selects a yes value to enable the audio bolusprogram and selects a no value to disable the audio bolus program.

If the pump 100 is preprogrammed with one or more custom meal boluses,the pump prompts 422 the user to select whether to review or edit acustom bolus. If the user does not want to review or edit a custombolus, the user selects no and the pump 100 returns to the PersonalizeDelivery submenu 302. If the user selects yes, the pump 100 presents adisplay 424 entitled “Custom Bolus,” which lists the names 426 of theavailable custom meal bolus programs. The display 424 also presents acheck box 428 for each of the custom meal bolus programs 426. If acustom meal bolus program 426 is enabled, the check box 428 is set. If acustom meal bolus program 426 is not enabled, the check box 428 iscleared. When a custom meal bolus is enabled, it is displayed in theMeal Bolus submenu 434 as a separate menu item. If the custom meal bolusprogram is not enabled, it is not displayed in the Meal Bolus submenu434 and the user cannot execute the program.

To enable or disable a meal bolus program, the user scrolls to thedesired custom meal bolus program and activates the Edit function 254.The pump 100 presents a display 430 entitled “Custom Bolus: X,” where Xis the name of the selected custom meal bolus program. In theillustrated example, the title of the display is Custom Meal Bolus:Pizza“. Upon activating the Edit function 254, the pump 100 prompts 432the user to select either a yes value or no value. If the user selectsthe yes value, the pump 100 enables the custom meal bolus program 426and displays the name of the program as a menu item in the Meal Bolussubmenu 434. If the user selects the no value, the pump 100 disables thecustom meal bolus program 426 and does not display the name of theprogram as menu item in the Meal Bolus submenu 434. After the yes or novalue is selected, the pump 100 returns to the “Custom Bolus” display424.

The user repeats this procedure from the “Custom Bolus” display 424 foreach custom meal bolus program 426 for which they desire to change theenabled state. When the user is done changing the enabled states for theavailable custom meal bolus programs 426, the user activates the Donefunction 212 in the “Custom Bolus” display 424. The pump 100 thenreturns to the Personalize Delivery submenu 302.

Additionally, in one possible embodiment, if there are no custom mealbolus programs available for the user to enable, the pump 100automatically returns to the Personalize Delivery submenu 302 after theuser instructs 420 the pump 100 whether to enable an Audio Bolus.

In one possible embodiment, a user can program the pump 100 to include adatabase of foods for which to configure delivery of a custom bolus. Auser of the pump 100 selects one or more foods from the database offoods to form a meal from which the user's carbohydrate intake iscalculated. The database of foods can include a number of recordsassociated with food entries. The food entries each represent a food ora combination of foods. The record includes fields for a name of thefood entry, the amount of carbohydrates contained in the food or foodsrepresented by the food entry, and a default serving size for the foodentry.

Each entry in the food database is a food entry. The food entry has anumber of fields within it. One field can be a name field, and will bethe information displayed to the user representing the name or names ofthe food displayed. The food entries can represent specific foodstracked by a user of the pump. The food entries can also represent mealsincluding a variety of foods typically eaten by the user, and wouldinclude combinations of types of foods. Examples of foods displayedcould be “pizza” or “apple”, or could also be “Chicken, Potato, andGreen Beans” or some other combination commonly consumed by the user,who may wish to store the combination so that they do not have to selecteach food and serving size each time they consume the common meal.

Additional fields include a carbohydrate field and a serving size fieldrelated to the foods displayed. The carbohydrate field containsinformation related to the number of carbohydrates are contained in thefoods, given a default serving size stored in the serving size field.The carbohydrate field and the serving size field are customizable by auser, and can be set independently of each other as well.

In a possible embodiment of the food database, nutritional informationis stored in the food database and associated with the one or more fooditems. The additional nutritional information can be stored inadditional fields associated with the food entry, or can be storedseparately and referenced by the food entry. The nutritional informationincludes, for example, additional carbohydrate information, fatinformation, or protein information. Other nutritional information canbe stored as well.

In a further possible embodiment of the food database, the pump 100stores metadata related to one or more user conditions in conjunctionwith one or more of the foods in the food database. The pump can beconfigured to display specific foods upon occurrence of the conditions.These conditions include, for example, such as activity levels,sickness, high or low blood glucose levels, or other conditions. Forexample, in the case of a low blood glucose level, a metadata tag may beassociated with a food entry in the food database “orange juice” whichwill be displayed to the user upon detection of a low blood glucoselevel. Optionally, the pump 100 displays a specific amount of orangejuice to consume, as calculated using the negative meal bolus feature,described herein.

In one embodiment, the food database includes 500 or more foods,categories of foods, and/or meals. In a possible embodiment, the fooddatabase is a subset of a larger food database that is stored on acomputing system that can be interfaced with the pump 100, such as thesystem shown below in FIG. 26.

Referring now to FIG. 17, a meal maker function allows the user toselect one or more food entries from the food database to form meals.Meals refer to combinations of one or more food entries selected usingthe pump which indicate the food or foods which the user plans toconsume. In one embodiment, up to 10 food entries are selectable fromthe food database to form a meal. The food entries in the food databaseare categorized into one or more hierarchical levels for ease ofnavigation, and food categories screen 405 displays one or more foodcategories in a category listing 407, allowing the user to navigate to afood or meal to be consumed using the up and down keys 142, 144. Theuser selects a food or meal category from the overall food listing 407,and confirms the choice using a next option 409. Upon activation of thenext option, the pump 100 indexes focus to a food entries screen 411.The food entries screen 411 presents a number of foods within thecategory selected using the food categories screen 405. In the exampleshown, a fruits category includes single fruits as well as a fruit saladoption, which corresponds to a variety of fruits. The user selects atleast one food using the up and down keys 142, 144 and uses a nextoption 413 to confirm selection of one of the food entries.

Upon activation of the next option 413, the pump 100 indexes focus to aservings screen 409. The user selects the number of servings, or“serving size” of the selected food entry that will be consumed, using aservings field 417 and the up and down keys 142, 144. The useroptionally also defines the default amount of food referred to as the“serving size”, such that a single serving of the food represents theamount of the food that user eats in a single meal. In one particularimplementation, the selectable number of servings of the food can bebetween 0.5 and 3 servings, based on the default food amount. Uponselection of a serving size using a select option 419, the pumpcalculates the number of carbohydrates to be consumed for the selectedfood entry, and indexes focus to a confirmation screen 421. Theconfirmation screen 421 displays the food or foods selected, as well asa number of informational items related to nutritional aspects of thefood, including the serving size of the food, the number ofcarbohydrates, and the amount of fiber, protein, and fat included in thefood. The informational items correspond to the information stored inthe food database and associated with the food entry. Other informationcan be displayed as well, such as by incorporating additional fieldsinto each food entry in the food database. The user can select an addoption 423 to add additional food entries to the current meal using thefood database, or confirm that the food entries selected represent themeal desired using a set option 425. Upon user confirmation using theset option 425, the pump 100 indexes focus to a delivery screen 427. Thedelivery screen 427 displays overall meal information, including a totalnumber of carbohydrates consumed, a listing of the foods to be consumed,and other optional nutritional or serving size information. Uponselection of a home option 429 the pump indexes focus to a carbohydratedelivery screen 200, such as are shown below in FIG. 20. Using theappropriate screens as described below, the pump delivers an appropriatemeal bolus based on the total number of carbohydrates to be consumed inthe meal. A back option returns to the confirmation screen 421 allowingthe user to add additional foods to the meal.

If a food is not selected from the food database, the user can directlyenter a number of carbohydrates, as illustrated in FIG. 20 below.However, in any event the pump prevents the user from specifying aserving size for the food item which would cause the total insulin bolusto be greater than the programmed maximum insulin dose, as set using theprompt 412.

In the embodiment shown in FIG. 17, the meal maker function provides ahierarchy of menu-based screens configured to organize the foods listedin the food database. The hierarchy of menus includes one or more levelsof menus, each menu representing foods, meals, types of foods, types ofmeals, or other user-selectable navigation or selection criteria. Inanother embodiment, all foods are displayed in a non-hierarchicallisting.

FIG. 18 illustrates administration of a standard meal bolus when thepump 100 is set to program meal boluses using units of insulin. The userselects the meal bolus menu item from the main menu, and the pumpindexes to a Meal Bolus submenu 434. The meal bolus submenu 434 liststhe available meal bolus programs. Examples include the standard mealbolus program, the extended meal bolus program, the combination mealbolus program, and any enabled custom meal bolus programs. In theillustrated example, only the extended meal bolus program is enabled andthe Meal Bolus submenu 434 includes a Standard Bolus and an ExtendedBolus. The user highlights the Standard Menu item and the pump 100prompts 436 the user to enter the number of units to deliver. In onepossible embodiment, the user can scroll through values in the rangefrom 0 units to 17 units in increments of 0.5 units.

If the pump 100 is programmed to enable administration of a correctionbolus through the Meal Bolus program, the pump 100 prompts 436 the userto enter the number of units to deliver as a meal bolus. The user thenactivates the Deliver function 384 and the pump 100 prompts 438 the userto enter the amount by which they want to lower their blood glucoselevel. In one possible embodiment, the user enters the amount byscrolling through values in units of either mg/dL or mmol/L. When thedesired drop in blood glucose is entered, the user activates the Nextfunction 200, which causes the pump 100 to calculate a recommended bolusamount and to display a user interface with the banner 439 stating“Bolus to Lower BG X plus Y meal bolus.” X is the amount the userentered to lower the blood glucose level, and Y is the amount of themeal bolus entered by the user.

The user interface also displays the recommended bolus amount 440 todeliver. The recommended bolus amount 440 is the recommended correctionbolus as calculated above, plus the amount of the meal bolus. Thisfeature allows the user to correct a high blood glucose level anddeliver additional insulin to work against carbohydrates that they planto consume. The user can adjust the recommended bolus amount byincreasing or decreasing the recommended bolus amount by scrolling up ordown. In one possible embodiment, the user scrolls in increments of 0.5units. Once the desired bolus amount is set, the user activates theDeliver function 384.

Activating the Deliver function 384 causes the pump 100 to deliver thecorrection bolus. The pump 100 will begin to deliver the bolus anddisplay a banner 408 stating that the bolus is being delivered. Anexample of such a banner is “Bolus X is Delivering”, where X is thebolus amount. When delivery of the bolus is complete, the pump 100returns to the home page 152.

In an alternative embodiment, when the pump 100 is programmed to enableadministration of a correction bolus through a Meal Bolus, the pump 100displays a user interface entitled “Current Blood Glucose.” The pump 100calculates the current correction factor and displays the correctionfactor in the user interface. The pump 100 also displays the targetblood glucose level. The user then enters his or her current bloodglucose level in units of either mg/dL or mmol/L, by scrolling through arange of values until the current blood glucose level is displayed. Inthis embodiment, the target blood glucose level and the appropriateunits are programmed into the pump 100 when personalizing the correctionbolus program as described herein. After the user enters the currentblood glucose level, the user activates the Next function 200 and thepump 100 calculates a recommended bolus amount, using the equations setforth above, and adds it to the meal bolus. The pump 100 displays theuser interface with the banner “Bolus to Lower BG X plus Y Meal Bolus”439. The user can then change the amount 440 and activate the Deliverfunction 384 to begin delivery of the bolus as described above.

Additionally, in one possible embodiment, the pump 100 adjusts therecommended bolus based on the meal bolus or the meal bolus plus thecorrection bolus to accommodate insulin on board or residual insulinthat is still working within the user's body. In this embodiment, theamount of the adjusted correction bolus is adjusted using the equationsdescribed above in conjunction with the duration-of-activity function.The methods of adjusting the bolus amount for insulin on board aredescribed above.

Referring to FIG. 19, to instruct the pump 100 to program the standardmeal bolus in number of carbohydrates consumed and to otherwisepersonalize the meal bolus program, the user accesses the PersonalizeDelivery submenu 302. From the Personalize Delivery submenu 302, theuser selects the Meal Bolus menu item and the pump 100 then prompts 442the user to select whether to program in units of insulin orcarbohydrates. The user highlights units of carbohydrates and activatesthe Next function 200. The pump 100 prompts 444 the user to enter one ormore carbohydrate ratios, which is the number of grams of carbohydratesthat each unit of insulin will counteract. The pump 100 optionallyaccepts a schedule of carbohydrate ratios as well, allowing thecarbohydrate ratio to change based on the time of day. The pump 100 alsocalculates the historical average carbohydrate ratio 445 for apredetermined time-period and displays that historical average with theprompt 444. In one possible embodiment, the historical average is forthe previous 7-day period. As discussed above, other embodiments averagethe carbohydrate ratio over other periods of time. In yet otherembodiments the user can select the period of time over which to averagethe carbohydrate ratio.

The user enters the carbohydrate ratio by scrolling through values in apredetermined range such as from 0 gm/u to 50 gm/u in increments of 1.When the desired number of carbohydrates is set, the user activates theNext function 200 and the pump 100 prompts 446 the user to set theincrement by which the user would like to be able to scroll through thenumber of carbohydrates when programming the pump 100 to deliver a mealbolus. In one possible embodiment, the user can set the desiredincrement between 1 and 15 grams.

The pump 100 prompts 448 the user to enter the maximum bolus that can bedelivered. In one possible embodiment, the user scrolls through valuesin the range between 0 units and 40 units of insulin in increments of 1until the desired value is highlighted. The pump 100 then prompts 450the user to enter the increments in which the user can select the actualbolus to be delivered. In one possible embodiment, the user scrollsbetween 0.05 units, 0.10 units, 0.50 units, and 1.00 units and activatesthe Next function 200.

The pump prompts 452 the user to select whether to enable an extendedbolus program and to display an Extended Bolus menu item within the MealBolus submenu 434. The extended bolus program is enabled by highlightingand activating a yes value and not enabled by highlighting and selectinga no value. The pump 100 also prompts 454 the user to select whether toenable a combination bolus program and to display a Combo Bolus menuitem within a Meal Bolus submenu 434. The combination bolus program isenabled by highlighting and activating a yes value and not enabled byhighlighting and selecting a no value. The user activates the Nextfunction 200 to index through these prompts 452 and 454. The pump 100then prompts 456 the user to choose whether to enable an audio bolusprogram. The user selects a yes value to enable the audio bolus programand selects a no value to not enable the audio bolus program and thenactivates the next function 200.

If the pump 100 is preprogrammed with one or more custom meal boluses,the pump 100 then prompts 458 the user to select whether to review oredit a custom bolus. If the user does not want to review or edit acustom bolus, the user selects no and the pump 100 returns to thePersonalize Delivery submenu 302. If the user selects yes, the pumpindexes to a display 460 entitled “Custom Bolus,” which lists the names462 of the available custom programs. In the illustrated example, thereare four custom boluses available on the pump, Breakfast, Lunch, Dinner,and Snack.

The screen also presents a check box 464 for each of the custom mealbolus programs 462. If a custom meal bolus program is enabled, the pump100 sets the check box 464. If a custom meal bolus program is notenabled, the pump 100 clears the check box 464. When a custom meal bolusprogram is enabled, it is displayed in the Meal Bolus submenu 434 as aseparate menu item. If the custom meal bolus program is not enabled, itis not displayed in the Meal Bolus submenu 434 and the user cannotexecute the custom meal bolus program.

To enable or disable a custom meal bolus program, the user selects thedesired custom meal bolus program and activates the Edit function 254.The pump 100 indexes to a display 466 entitled “Custom Bolus: X,” whereX is the name 462 of the selected custom meal bolus program. In theillustrated example, the title of the display 466 is “Custom Meal Bolus:Breakfast”. The user interface 466 displays 468 a default number ofcarbohydrates for the custom bolus. For example, the user can create acustom breakfast meal bolus that would have a default value of 90carbohydrates, equal to the number of carbohydrates in a bowl of cerealand milk normally consumed by the user at breakfast. The pump alsoprompts 470 the user to select either a fixed carbohydrate ratio or thepreviously entered carbohydrate ratio schedule. If the user selects afixed carbohydrate ratio, the fixed carbohydrate ratio is used with thecustom meal bolus program. The value of the carbohydrate ratio 468 mayor may not be the same value as the carbohydrate ratio 444. The userenters the carbohydrate ratio by scrolling through values in apredetermined range such as from 0 gm/u to 50 gm/u in increments of 1.When the desired number of carbohydrate ratio is set, the user activatesthe Next function 200 and the pump 100 returns to the “Custom Bolus”submenu 434.

The user repeats this procedure from the “Custom Bolus” display 460 foreach custom bolus program for which they desire to change the enabledstate. When the user is done changing the enabled states for theavailable custom meal bolus programs, the user activates the Donefunction 212. The pump 100 then returns to the Personalize Deliverysubmenu 302.

Additionally, in one possible embodiment, if there are no custom mealbolus programs available for the user to enable, the pump 100automatically returns to the Personalize Delivery submenu 302 after theuser instructs 456 the pump 100 whether to enable an Audio Bolus.

FIG. 20 illustrates administration of a standard meal bolus when thepump 100 is set to program meal boluses using grams of carbohydrates.The user selects the meal bolus menu item from the main menu 190, andthe pump indexes to the Meal Bolus submenu 434. The meal bolus submenu434 lists the available meal bolus programs. Examples include thestandard meal bolus program, the extended meal bolus program, thecombination meal bolus program, and any enabled custom meal bolusprograms. In the illustrated example, only the extended meal bolusprogram is enabled and the meal bolus submenu includes a Standard Bolusand an Extended Bolus.

The user selects the Standard Menu item and the pump 100 prompts 472 theuser to enter the number of carbohydrates that the user plans toconsume. The user interface also displays the current carbohydrate ratio473. The user sets the desired number of carbohydrates. In one possibleembodiment, the user scrolls through carbohydrates in the range from 0grams to 225 grams.

The user then activates the Next function 200 and the pump 100calculates a recommended size for the meal bolus using the equation:

$\begin{matrix}{{{Recommended}\mspace{14mu} {Meal}\mspace{14mu} {Bolus}} = \frac{{Grams}\mspace{14mu} {of}\mspace{14mu} {Carbohydrates}}{{Carbohydrate}\mspace{14mu} {Ratio}}} & (5)\end{matrix}$

The pump 100 displays 474 the recommended meal bolus. The user can thenadjust the size of the meal bolus by scrolling up or down. In onepossible embodiment, the pump 100 scrolls in increments of 1. Once thedesired bolus amount is set the user activates the Deliver function 384.

In a further possible embodiment, the recommended meal bolus is alteredbased on other nutritional information associated with the selected foodentries from the food database. For example, the meal bolus can beincreased for foods with a large number of proteins and/or fats inaddition to the carbohydrates in the food.

In yet another embodiment, the meal bolus is altered based on othernutritional information associated with the selected food entries fromthe food database. For example, a combination or extended bolus isoptionally recommended for foods having a large number of fats inaddition to the carbohydrates in the food.

When the pump 100 is programmed to enable administration of a correctionbolus through a Meal Bolus, the pump 100 prompts 472 the user to enterthe number of carbohydrates to be consumed. The user then activates theNext function 200, and the pump 100 prompts 478 the user to enter theamount by which they want to lower their blood glucose level. The userthen activates the Next function 200, which causes the pump 100 tocalculate a recommended bolus amount and to display a user interfacewith a banner 482 stating “Bolus to Lower BG X plus Y grams ofcarbohydrates.” X is the amount by which the user entered to lower theblood glucose level, and Y is the number of carbohydrates that the userentered.

The pump 100 also displays the recommended bolus amount 480 to deliver.The recommended bolus amount 480 is the recommended correction bolusplus the amount of the meal bolus. This feature allows the user tocorrect a high blood glucose level and deliver additional insulin towork against carbohydrates that they plan to consume. The user canadjust the recommended bolus amount by increasing or decreasing therecommended bolus amount by scrolling up or down. In one possibleembodiment, the user scrolls in increments of 0.5 units. Once thedesired bolus amount is set, the user activates the Deliver function384.

Activating the Deliver function 384 causes the pump 100 to start thecountdown timer and display the banner 404 that states a bolus will bedelivered in predetermined time. In one possible embodiment, that timeis 5 seconds and the banner 404 also states the bolus amount. An exampleof a possible banner 404 states “Bolus X Delivery Starts in 5 Seconds,”where X is the bolus amount. The pump 100 also assigns a Stop function406 to the first function key 138.

If the user activates the Stop function 406 before the countdown timertimes out, the pump 100 will terminate delivery of the bolus and returnto the home page 152. If the user does not activate the Stop function406, when the timer times out, the pump 100 will begin to deliver thebolus and display the banner 408 stating that the bolus is beingdelivered. An example of such a banner is “Bolus X is Delivering”, whereX is the bolus amount. When delivery of the bolus is complete, the pumpreturns to the home page 152.

In an alternative embodiment, when the pump 100 is programmed to enableadministration of a correction bolus through a Meal Bolus, the pump 100prompts the user to enter their current blood glucose measurement. Thepump 100 calculates the current correction factor and also displays thecorrection factor and the target blood glucose level with the prompt.The user then enters his or her current blood glucose level in units ofeither mg/dL or mmol/L, by scrolling through a range of values until thecurrent blood glucose level is displayed. In this embodiment, the targetblood glucose level and the appropriate units are programmed into thepump when personalizing or customizing the correction bolus program.Once the user enters the current blood glucose level, the user activatesthe Next function 200 and the pump 100 calculates a recommended bolusamount and adds it to the meal bolus. The pump 100 displays the userinterface with the banner 482 “Bolus to Lower BG X plus Y grams ofcarbohydrates.” The user can then change the amount and activate theDeliver function 384 to begin delivery of the bolus as described above.

Additionally, in one possible embodiment, the pump 100 adjusts therecommended bolus based on the meal bolus or the meal bolus plus thecorrection bolus to accommodate insulin on board or residual insulinthat is still working within the user's body. In this embodiment, theamount of the adjusted correction bolus is adjusted using the equationsdescribed above in conjunction with the duration-of-activity function.The methods of adjusting the bolus amount for insulin on board isdescribed herein.

In a further possible embodiment, the pump 100 logs the meals selectedby the user and for which meal boluses are delivered. The pumpoptionally logs nutritional information related to the meals, such asinformation related to carbohydrates, fats, or proteins. Othernutritional information can be logged as well.

In yet another embodiment the pump 100 generates and presents reports tothe user. The reports can include historical food intake, as well ascumulative nutritional information of the foods consumed.

FIG. 21 illustrates administration of an extended bolus. The userselects the meal bolus menu item from the main menu 190, and the pump100 indexes to a Meal Bolus submenu 434. The meal bolus submenu 434lists the available meal bolus programs including the extended bolusprogram. In the illustrated example, the extended meal bolus program andthe combination bolus program are enabled and the meal bolus submenuincludes menu items for a standard bolus, an extended bolus, and acombination bolus.

The user selects the Extended Bolus menu item and, when the pump 100 isset to program in units of insulin, the pump prompts 484 the user toenter the number of units to deliver. In one possible embodiment, theuser can scroll through values in the range from 0 units to 17 units inincrements of 0.5 units. When the number of units for delivery areentered, the user activates the Next function 200 and the pump 100prompts 486 the user to enter the duration of length of time over whichthe extended bolus is to be delivered. In one possible embodiment, theuser enters a duration in the range of 0 minutes to 6 hours inincrements of 30 minutes.

When the duration is set, the pump 100 displays a user interface 488that presents the programmed amount 490 of the extended bolus and theduration 492 over which it is to be delivered. To begin delivery of theextended bolus, the user activates the Deliver function 384. The pump100 then begins delivering the extended bolus and will complete deliveryupon expiration of the duration.

Alternatively, when the pump 100 is set to program in grams ofcarbohydrates, the pump 100 prompts 484′ the user to enter the grams ofcarbohydrates that the user plans to consume rather than the units ofinsulin to deliver as an extended bolus. The pump 100 also prompts 486the user to enter the duration for the extended bolus. The pump 100displays 485 the carbohydrate ratio while prompting the user to enterthe grams of carbohydrates 484′ and the duration 486. The pump 100 thencalculates a recommended bolus amount 490′ using the carbohydrate ratioas described above and displays the recommended bolus amount 490′,together with the duration 492 in a user interface that confirms theparameters for delivery of the extended bolus. The user can adjust therecommended amount 490′ for the extended bolus by scrolling with the upand down keys 142 and 144. The user activates the Deliver function 384to begin delivery of the extended bolus using the parameters displayedin the user interface.

After delivery of the extended bolus begins, if the pump 100 isprogrammed to enable administration of a correction bolus through theMeal Bolus program, the pump 100 prompts 494 the user to enter theamount by which they want to lower their blood glucose level. The userthen activates the Next function 200 and the pump 100 prompts 496 theuser to enter the number of units to deliver as a meal bolus. In onepossible embodiment, the user enters the amount by scrolling throughvalues in units of either mg/dL or mmol/L. When the desired drop inblood glucose is entered, the user activates the Next function 200,which causes the pump 100 to calculate a recommended bolus amount and todisplay the banner 497 “Bolus to Lower BG X.” X is the amount by whichthe user entered to lower the blood glucose level.

The prompt 496 initially displays the recommended bolus amount todeliver. The recommended bolus amount is the recommended correctionbolus 490 or 490′, which the pump 100 calculates using the correctionfactor as discussed above. This feature allows the user to correct ahigh blood glucose level and deliver additional insulin to work againstcarbohydrates that they plan to consume. The user can adjust therecommended bolus amount 496 by increasing or decreasing the recommendedbolus amount 496 by using the up and down keys 142 and 144. In onepossible embodiment, the user scrolls in increments of 0.5 units. Oncethe desired bolus amount is set, the user activates the Deliver function384.

Activating the Deliver function 384 causes the pump 100 to display thebanner 404 that states a bolus will be delivered in predetermined time.In one possible embodiment, that time is 5 seconds and the pump 100displays the bolus amount 496 in the banner. An example of a possibleuser interface states “Bolus X Delivery Starts in 5 Seconds,” where X isthe amount of the correction bolus. The pump 100 also assigns the Stopfunction 406 to the first function key 138.

If the user activates the Stop function 406 before the countdown timertimes out, the pump 100 will terminate delivery of the correction bolusand return to the home page 152. In one possible embodiment, activatingthe Stop function 406 will terminate delivery of the correction bolus,but not the extended bolus. If the user does not activate the Stopfunction 406, when the timer times out, the pump 100 will begin todeliver the bolus and display the banner 408 stating that the bolus isbeing delivered. An example of such a banner is “Bolus X is Delivering”,where X is the bolus amount. When delivery of the bolus is complete, thepump 100 returns to the home page 152. In an alternative embodiment, notimer is included in the pump and the pump 100 begins delivering thecorrection bolus immediately.

In an alternative embodiment, when the pump 100 is programmed to enableadministration of a correction bolus through a Meal Bolus, the pump 100prompts the user to enter their current blood glucose measurement. Thepump 100 calculates the current correction factor and displays thecorrection factor in the user interface. The pump 100 also displays thetarget blood glucose level. The user then enters his or her currentblood glucose level in units of either mg/dL or mmol/L, by scrollingthrough a range of values until the current blood glucose level isdisplayed. In this embodiment, the target blood glucose level and theappropriate units are programmed into the pump 100 when personalizingthe correction bolus program. Once the user enters the current bloodglucose level, the user activates the Next function 200 and the pump 100calculates a recommended bolus amount and adds it to the meal bolus. Thepump 100 displays the user interface with the banner “Bolus to Lower BGX plus Y Meal Bolus.” The user can then change the amount and activatethe Deliver function 384 to begin delivery of the bolus as describedabove.

Additionally, in one possible embodiment, the pump 100 adjusts therecommended correction bolus based on the meal bolus or the meal bolusplus the correction bolus to accommodate insulin on board or residualinsulin that is still working within the user's body. In thisembodiment, the amount of the adjusted correction bolus is adjustedusing the equations described above in conjunction with theduration-of-activity function. The methods of adjusting the bolus amountfor insulin on board is described herein.

Referring to FIG. 22, the user can halt delivery of an extended bolus byactivating the Stop function 172 on the home page 152. As describedabove, the pump 100 prompts the user to halt all delivery or just theextended bolus. The user selects the extended bolus. The pump 100 thenprints the banner 386 indicating how much time remains in the durationfor the extended bolus and how much of the extended bolus remains to bedelivered. The pump 100 also prompts the user to confirm that insulindelivery is to be stopped. The user confirms by activating the Yesfunction 178. The pump 100 then stops delivery of the extended bolus andreturns to pumping according to the normal basal rate. If the useractivates the No function 180, the pump 100 will continue deliveringaccording to the extended bolus and will return to the home page 152.The user optionally stops all delivery of insulin from the pump 100using the All Delivery option.

Referring to FIG. 23, delivery of a combination bolus is programmed intothe pump in a manner similar to that of an extended bolus. However, thepump also prompts 498 the user to enter the proportion or percent of thebolus that the pump 100 delivers immediately upon activation of theDeliver function 384. To enter the proportion of the amount that isdelivered immediately, the user scrolls through percentages until thedesired percentage of the bolus for immediate delivery is set. In onepossible embodiment, the user scrolls through percentages in the rangefrom 0% to 100% in increments of 1. Additionally when programming thepump to deliver a combination bolus, the pump 100 displays 500 thepercentage of the bolus that is to be delivered immediately in theconfirmation user interface 488. In an alternative embodiment, the userenters the proportion or percent of the bolus that the pump 100 deliversover an extended period.

Referring to FIG. 24, the user can suspend delivery of a combinationbolus in a manner substantially similar to that of the extended bolusexcept that the pump 100 displays a combination bolus menu item in thesuspend menu. The user selects the combination bolus menu item tosuspend delivery of the combination bolus, and then confirms suspensionof the combination bolus.

L. Weekly Schedule

A weekly schedule can be created and preprogrammed into the pump 100.The weekly schedule allows the user to schedule a pattern of basal ratesfor individual days of the week, and also allows the user to schedule aset of missed meal bolus alerts for individual days of the week. Theweekly schedule allows a user to preprogram one or more basal rates asdescribed above in conjunction with FIGS. 10-11, and to preprogram oneor more meal bolus alert sets as described above in conjunction withFIGS. 16-20.

Referring to FIG. 25, the pump 100 presents an editable weekly scheduleto accommodate a user's specific insulin delivery requirements. Forexample each user may have varying meal times, activity levels, orinsulin absorption rates which will affect the basal rate and bolustiming required of the pump 100. In the example shown, the user selectsan Edit Schedule item optionally included in the main menu 190, and thepump 100 indexes focus to an edit schedule submenu 500. The editschedule submenu 500 can be used in addition to or as a substitute forthe basal programs option in the Personalize Delivery submenu 302described above. The edit schedule submenu 500 lists the availableediting options for the temporary rates, weekly schedule, basalpatterns, and correction boluses. In the example shown, the menu itemsare displayed as “Temp Basal Pattern”, “Edit Weekly Schedule”, “EditBasal Patterns”, and “Edit Missed Meal Alert”, respectively. Other menuitems or names for menu items are possible as well.

The user selects one of the menu items to edit the corresponding aspectof the weekly schedule. If the user selects the Temp Basal Patternoption in the edit schedule submenu 500, the pump 100 indexes focus to astart temporary basal pattern screen 502 which allows the user toindicate when to start the temporary basal pattern. A temporary basalpattern is a basal pattern that overrides, for a day, the basal patternscheduled in the weekly schedule. For example, if a pump user has tooccasionally work on Saturday, they can schedule their “Weekday” patternto temporarily override their “Weekend” pattern for the Saturday theymust work. Selecting the Temp Basal Pattern option allows the user tohave a temporary basal pattern applied by the pump 100 for the remainderof the current day and a second temporary basal pattern programmed totake effect the following day as well. A temp basal pattern start box503 displays the time at which the temporary basal pattern will begin.In the start temporary basal pattern screen 502 shown, the temp basalpattern start box 503 indicates that the basal pattern will startimmediately. To select a different time at which the temporary basalpattern will begin, the user can change the setting in the temp basalpattern start box 503 using the up and down keys. Other start times,such as delayed by an hour, a day, or other time period are possible. Aback option returns focus to the edit schedule submenu 500.

Upon confirmation of the temp basal pattern start time by selecting anext option, the pump 100 indexes focus to a select temp pattern screen504. The select temp pattern screen 504 prompts the user to select thetemporary basal pattern that is to be applied. The user selects from thelist of basal patterns 505 programmed or loaded into and enabled in thepump. In the example shown, “Weekday”, “Weekend”, “Sick Day”, and “BasalPattern 4” are listed as selectable options. Other lists or combinationsof basal patterns can be displayed as well, depending upon the patternscreated or loaded into the pump 100. The user selects one of the basalpatterns using up and down keys 142, 144. Upon selection of a basalpattern and confirmation of the selection with a select option, focusreturns to a main menu 190. A back option in the select temp patternscreen 504 returns focus to the start temporary basal pattern screen502.

If the user selects the Edit Weekly Schedule option in the edit schedulesubmenu 500, the pump 100 indexes focus to a day program screen 506,which displays the basal pattern and missed meal pattern associated withthat day. In the day program screen 506 shown, the day displayed isMonday, and the basal pattern is Pattern 1. The missed meal bolus alarmset is shown as Set 1. The up and down keys 142, 144 navigate throughthe days of the week, and an edit option 507 indexes focus to a day editscreen 508. The day edit screen 508 displays the basal pattern assignedto the day in a basal pattern field 509, and allows the user to edit thebasal pattern for the day selected in the day program screen 506. Theuser changes the basal pattern using the up and down keys 142, 144,among the basal patterns edited using the Edit Basal Patterns option inthe edit schedule submenu 500. The user also optionally selects a missedmeal bolus alert set to associate with the selected day, from a listingof missed meal bolus alert sets programmed using the Edit Missed MealAlert option in the edit schedule submenu. A back option and a nextoption both cause the pump 100 to index focus back to the day programscreen 506.

If the user selects the Edit Basal Patterns option in the edit schedulesubmenu 500, the pump 100 displays a basal pattern listing 510 includingbasal patterns programmed into the pump. The basal pattern listing 510displays one or more editable basal patterns which are available to bescheduled in the day edit screen 509 or used as temporary basal patternsin the select rate screen 504. The basal pattern listing 510 displaysthe defined basal patterns, and allows a user to select one of thepredefined basal patterns using the up and down keys 142, 144. The userselects a back option to return to the edit schedule submenu 500, orselects a select option 511 to cause the pump 100 to index focus to apattern view screen 512 related to the selected basal pattern. The pump100 displays a listing of times and associated delivery rates in thepattern view screen 512 for the basal pattern selected in the basalpattern listing 510. If the user does not wish to edit the timesdisplayed, the user selects a back option to return to the basal patternlisting 510. To edit one or more of the times and/or basal patterns, theuser selects an edit option 513 to cause the pump 100 to index focus toa pattern edit screen 514. The pattern edit screen 514 displays on thepump 100 and allows the user to change the times and basal rates, or addadditional times with associated basal rates. The user employs the upand down keys 142, 144 to select and edit the times of the day, as wellas to select and edit the basal rates associated with the times of theday. A done option 515 indicates that the user has completed editing thebasal pattern, and causes the pump 100 to index focus back to thepattern view screen 512. A next option 517 indexes focus within thepattern edit screen 514.

If the user selects the Missed Meal Alert option in the edit schedulesubmenu 500, the pump indexes focus to a missed meal alert listing 516.The missed meal alert listing 516 includes one or more sets of alertsconfigured to match the planned meal times of the user. The sets ofalerts correspond to the alerts selected using the day edit screen 508.If the pump 100 does not deliver a meal bolus between the start and endtime of a missed meal alert, the user may have forgotten to deliver themeal bolus and is prompted to deliver the meal bolus. The meal bolus canbe programmed according to the meal bolus and food database descriptionabove. The user can select one or more missed meal alert sets usingselection boxes associated with each of the missed meal alert sets. Aselect option 519 causes the pump to index focus to an alert enablescreen 518.

The alert enable screen 518 displays the enabled or disable status ofthe missed meal alert set selected in the missed meal alert listing 516,and also displays the name of the alert set. A next option indexes focusto an alert listing 520 associated with the alert set displayed in thealert enable screen 518. A back option returns focus to the missed mealalert listing 516.

Upon user selection of the next option, the pump 100 indexes focus tothe alert listing 520, which displays all of the defined missed mealalerts associated with a missed meal alert set. The user can select oneor more of the alerts in the alert listing which the user wishes toedit. Upon selection of a select option 519, the pump 100 indexes focusto an alert edit screen 522. A back option returns focus to the alertlisting screen 520.

The alert edit screen 522 allows the user to set a start time and an endtime for the selected alert in the missed meal alert set. Upon selectionof a next option 523 in the alert edit screen 522, the pump 100 returnsfocus to the missed meal alert listing 516. A back option in the alertedit screen 522 returns focus to the alert listing 520.

In a possible embodiment of the weekly schedule, the home screen 152 canbe modified to display information related to the weekly schedule asprogrammed, such as the current day of the week, the type of day orbasal rate currently applied, the name of the basal rate pattern, themissed meal alert set applied, or other information related to theweekly schedule.

Although specific examples are illustrated herein, the weekly schedulecan be used to schedule basal rates, delivery patterns, and boluses forvarious events such as different daily meal schedules, upcoming athleticevents, travel schedules, work schedules, sick days, parties, and anyother type of schedule or event. Additionally, sets of scheduled targetblood glucose levels, such as are related to a correction bolus ornegative meal bolus, can be created. In an alternative embodiment, aweekly schedule could also be used to remind the user of other eventssuch as testing blood glucose levels.

The weekly schedule disclosed herein is modifiable to provide to a usera monthly or yearly schedule as well. The monthly or yearly schedule canbe programmed with monthly or yearly meal boluses, and can trackholidays, vacations, or other events which occur outside the user'stypical daily or weekly schedule.

M. Disconnect/Suspend Bolus

Referring back to FIG. 3, a disconnect/suspend bolus feature is includedin the pump 100, and can be added to the main menu 190. Thedisconnect/suspend bolus feature 193 allows a user to disconnect fromthe pump 100 for up to two hours without missing delivery of insulin,although other embodiments will permit disconnecting the pump forperiods greater than two hours. A user may want to disconnect from thepump 100 for a variety of reasons, such as for bathing, high levels ofactivity, or in other situations in which a pump may be inconvenient orunsafe.

When the user wishes to disconnect from the pump 100, the user is firstprompted by the pump 100 to enter the duration they will be disconnectedfrom the pump. The pump 100 calculates and displays the amount ofinsulin delivery which will be missed in that time. This includes anybasal rate and temporary rate scheduled during that time. The pump 100prompts the user to enter a percentage of the missed insulin that theuser wishes to receive as a bolus prior to disconnecting from the pump,and accepts any percentage value up to 100% of the total insulindelivery that will be missed, although other embodiments might include alimit other than 100%. This percentage bolus delivered prior todisconnection can be referred to as a disconnect bolus.

The pump 100 prompts the user to optionally check their blood glucoselevel prior to disconnecting from the pump. If the user chooses to checktheir blood glucose level and requires a correction bolus, thecorrection bolus is delivered prior to disconnection. If the userchooses to check their blood glucose level and the negative meal bolusfeature would normally activate, the pump 100 reduces the disconnectbolus to compensate for the user's low blood glucose level.

Upon confirmation by the user, the pump stops all basal rate delivery,logs the disconnection time, the percentage of immediately deliveredinsulin as selected, and delivers the disconnection bolus, which is thebolus amount calculated by the pump and multiplied by the percentageinput by the user. Once the bolus delivery is complete, the pump 100triggers an alarm, such as a visible alarm displayed on the pump or anaudible alarm emitted by the pump, indicating to a user that they shoulddisconnect from the pump. In the exemplary embodiment, the pump requestsconfirmation by the user that they are disconnected from the pump. Onceconfirmation is received from the user, the pump adds a “reconnect”option into the main menu 190. The pump stores its disconnected stateand the elapsed disconnection time, such that the pump status isretained during the disconnect/suspend bolus operation even if the pumppower is interrupted during the disconnect period, or if the userchanges the time or date in the pump 100.

When the pump 100 remains in the disconnected state, the user canphysically reconnect their infusion set and configure the pump todeliver a meal bolus or a correction bolus. The pump 100 maintains theinterrupted basal rate during the time that the pump is in thedisconnected state.

When the user begins the reconnect process by selecting the reconnectoption on the main menu, the pump 100 calculates the originallyscheduled insulin dose, which is the amount of insulin originallyscheduled to be delivered during the elapsed time between the time thepump was disconnected and the time the reconnect option is selected onthe main menu. The pump then subtracts the originally scheduled insulindose from the dose delivered by disconnection bolus the dose. If thedifference is a negative number, the user has reconnected before thetime they had indicated, and the pump should not deliver additionalinsulin to the patient upon reconnection. The pump 100 starts atemporary rate of zero units per hour for the time required for thebasal rate and boluses to make up for that negative amount. If theamount of insulin owed is a positive number, the pump 100 prompts theuser to enter the percentage of that “missed” amount that they wish tohave delivered, up to 100%. This percentage of missed insulin isreferred to as the reconnect bolus.

The pump 100 prompts the user to optionally check their blood glucoselevel before reconnecting. If the user chooses to check their bloodglucose level, any correction bolus deemed necessary will be added tothe reconnect bolus. Likewise, if the user chooses to check their bloodglucose level, any negative meal bolus will be subtracted from thereconnect bolus.

N. Additional Pump Features

Additional features can be included in the pump consistent with thepresent disclosure. For example, the pump can include programming fortemporary basal rates, an option to include an audio bolus, customizedalerts, and lock levels. A temporary rate allows the user to temporarilyraise or lower the delivery rate being administered by the active bolusprogram. The user can personalize or customize the temporary rateprograms and how they are present in the user interface. An audio bolusprovides for delivery of a standard meal bolus using a single button. Aseries of sounds, such as beeps, are used to provide an indication ofthe setting to the user. In a possible embodiment, the beeps areconfigured analogously to the sounds used to program the pump 100without the need for visual confirmation, such as by a visually impaireduser. Customizable alerts allow a user to select specific alerts forvarious types of events occurring in the pump. Lock levels providevarious levels of user rights in the pump based on access codes. Locklevels prevent unauthorized users from entering and changing settings inthe pump. These and additional pump features are described in greaterdetail in U.S. Pat. No. 6,744,350, filed Feb. 28, 2002 and entitledInsulin Pump Having Missed Meal Bolus Alarm, the disclosure of which wasincorporated by reference in its entirety above.

O. Computer-Pump Communication and Programming

In one possible embodiment, the pump 100 can communicate with acomputer. The computer can upload information from the pump 100,including the historical information generated by and stored on the pump100. The computer can archive the historical information and maintain acomplete historical record about the pump 100. Additionally, thecomputer can generate various reports regarding use of the pump 100,including information about delivery rates, bolus amounts, and alarms.Additionally, the computer can operate a program that allows the user toenter operating parameters for the various delivery programs that areloaded on the pump 100 and to download those operating parameters to thepump 100. In yet another possible embodiment, the computer can be usedto download delivery programs and software updates to the pump 100.

Referring to FIG. 26, in one possible embodiment, a computer 534 is adesktop computer that is IBM PC compatible, although other computers canbe used. For example, the computer 534 could be an Apple computer,portable computer, a hand-held computer, a mainframe computer, acomputer that is connected to a network. The computer 534 has a monitor536, a storage device 538, and an infrared (IR) communication port 540.The pump 100 communicates with the computer through the IR port 120 onthe pump 100 and the IR communication port 540 of the computer 534. Inother embodiments, the pump 100 and computer 534 communicate throughother types of data links such as a wireless or radio frequency (RF)connection or a wired connection such as USB, RS232, Fire wire, etc.

Communication between a medical pump and a computer is also discussed inU.S. Pat. No. 5,935,099, entitled Drug Pump Systems and Methods, thedisclosure of which is hereby incorporated by reference.

Referring to FIG. 27A, the software operating on the computer 534generates a user interface 542 that allows a user to view, edit, andenter operating parameters for the various delivery programs that areloaded on the insulin pump 100. In one possible embodiment, the userinterface 542 has a plurality of stacked primary windows 544 a-544 e.Each primary window includes a tab 546 a-546 e and data entry featuresfor entering profile settings for the delivery programs. A basalprograms primary window 544 a is associated with the basal deliveryprograms, and is marked with a tab 546 a bearing the name BasalPrograms. A meal boluses primary window 544 b is associated with themeal bolus delivery programs, and is marked with a tab 546 b bearing thename Meal Boluses. A correction boluses primary window 544 c isassociated with the correction bolus deliver programs, and is markedwith a tab 546 c bearing the name Correction Boluses. A temporary ratesprimary window 544 d is associated with the temporary rate deliveryprograms, and is marked with tab 546 d bearing the name Temporary Rates.A banner window 544 e can include display options for the pump 100, andis marked with tab 546 e bearing the name Banner. A weekly schedulesprimary window 544 f is associated with the weekly schedule programs,and is marked with tab 546 f bearing the name Weekly schedule.

A primary window 544 can include a variety of different data entryfeatures for entering the operating parameters including text, numbers,flags, or the like. Examples of the data entry features include buttons,check boxes, spin boxes, text fields, numeric fields, and tables. Thebuttons and check boxes are alternatively set and cleared by clicking onthem with a pointing device such as a mouse. Each spin box is associatedwith up and down buttons and contains a list of values. The user setsthe desired value by spinning though the list of values with the up anddown keys until the desired value is visible in the spin box. The tableshave rows of cells and a scroll bar. The user can manipulate the scrollbar with a pointing device to scroll through the available rows withinthe table. Additionally, each primary window has a download button, anupload button, and a save button.

The primary window on the top of the stack is active, and the user canenter, edit, and view operating parameters in the active primary window.The user can bring any one of the primary windows to the top of thestack by clicking on the primary window's tab.

Still referring to FIG. 27A, the first primary window 544 a, which isfor setting the operating parameters for the basal programs, has threepanels. The first panel 548 has a spin box 550 for setting the maximumbasal rate for the insulin pump. The spin box 550 is displayed in afirst group box 549. The user spins though available values until thedesired maximum basal rate is visible within the spin box 550. Themaximum basal rate set in the spin box will apply to all of the basaldelivery programs. In the illustrated example, there are four possiblebasal delivery programs. The first spin box 550 is present in a firstgroup box.

The second panel 552 of the screen has one secondary window 554 a-554 dfor each of the basal delivery programs. The secondary windows arestacked and are marked with tabs 556 a-556 d. Each tab 556 is markedwith the name of the basal program associated with the tab's secondarywindow 554. The secondary window 554 on the top of the stack is active,and the user can enter, edit, and view operating parameters in theactive secondary window. The user clicks on the tab 556 for any givensecondary window to bring it to the top of the stack. In the illustratedexample, there are four basal delivery programs and hence four secondarywindows named Basal 1 554 a, Basal 2 554 b, Basal 3 554 c, and Basal 4554 d.

Each secondary window 554 has a button 558, a check box 560, and a textfield 562 organized into a second group box 564 for setting programpreferences. A table 566 and a graph 568 are organized into a thirdgroup box 570 and are for naming, setting, and viewing the basaldelivery rates. To activate a basal delivery program, the user sets thebutton 558 by clicking on it. Any other basal program that was activebecomes inactive and the button for the previously active basal deliveryprogram is cleared. Additionally, an asterisk is placed in the tab 556for the active basal delivery program so that the user can easilyidentify the active basal delivery program if the secondary window 554for that basal delivery program is not on top of the stack. When theoperating parameters for the basal delivery programs are downloaded tothe pump 100, the basal delivery program in which the button 558 is setwill become the active basal delivery program on the pump 100.

To display the basal delivery program as a menu item in the BasalProgram submenu 318 (FIG. 12) on the pump 100, the user sets thecheckbox 560. When the operating parameters for the basal programs aredownloaded to the pump 100, the name for the basal program is displayedas a menu item in the Basal Program submenu 318.

To customize the name of the basal delivery program, the user types thecustom name into the text field 562. The custom name is assigned to thebasal delivery program and appears in the tab 556 for that program.Additionally, the custom name is the name downloaded into the pump 100and appears in the Basal Program submenu 318, if the checkbox 560 isset. In an alternative embodiment, a spin box is associated with thetext field 562. The spin box presents preprogrammed, optional names forthe basal delivery programs that the user can select. The selected namewould then replace the generic name (e.g., Basal 1, Basal 2, Basal 3,and Basal 4 in the illustrated example) for the program associated withthe display. Examples of optional names that might be loaded in the pump100 include weekday, weekend, sick, and monthly (which is to designate abasal delivery program set for a woman's menstrual cycle).

The basal rate table 566 or grid has a plurality of rows 572 and eachrow has two cells 574 and 576. When a cell within the table 566 hasfocus and the user presses the enter key or the tab key, the focusshifts to the next cell to the right. If the current cell is the lastcell in the row, focus shifts to the first cell in the next row. If theuser presses the enter key while the last cell in the last row is infocus, a new row is created. In this manner, the user can expand thelength of the table 572. If the user presses the enter key while thelast cell of a row is in focus and there is no data in any cell withinthat row, the computer will delete the row. The one exception is thefirst row in the table, which cannot be deleted.

The first cell within a row is a start-time cell 574, and the secondcell within a row is a delivery-rate cell 576. Each row corresponds to adifferent interval in the delivery protocol for the basal deliveryprogram. To set the delivery protocol for a basal program, the userenters the start time for each delivery interval in the start-time cell574 and the delivery rate in the delivery-rate cell 576. The pump 100will then deliver at the set delivery rate beginning at the set starttime and until the start time for the next delivery interval. In onepossible embodiment, the start time for the first interval is 12:00midnight and cannot be changed.

Accordingly, to set the delivery protocol for the basal deliveryprogram, the user types the start time in the start-time cell 574, hitsthe enter key and changes the focus to the delivery-rate cell 576 to theright. The user then types in the delivery rate for that interval, hitsthe cell key, and changes the focus to the start-time cell in the nextrow (creating the row if the next row does not already exist). A new rowwill appear in which the user can enter the operating parameters foranother delivery interval. The user continues this process until theoperating parameters for all of the desired intervals are entered intothe table.

In an alternative embodiment, when a cell has focus, a spin box havingup and down buttons is presented in that cell. The user can either typea value into the spin box or spin through values until a desired valueis visible in the spin box. When the cell and hence the spin box losesfocus, the visible value from the spin box is entered into thecorresponding cell and the spin box becomes invisible.

The graph 568 provides a graphical illustration of the delivery rate forthe basal delivery program over a 24-hour period. In one possibleembodiment, the graph 568 is a bar chart illustrating the delivery ratein a resolution of 30 minutes. In the illustrated example, Basal 1 isset to deliver 2 units/hour from 12:00 midnight to 2:00 am, 2.5units/hour from 2:00 am to 3:00 am, etc.

In one possible embodiment, the graph 568 is automatically updated asthe user completes entering the start time and delivery rate for eachdelivery interval. Additionally, the total daily basal rate is displayed578, and is automatically calculated and updated as the user completesentering the start time and delivery rate for each delivery interval.Entry of data for an interval is complete when the user enters the starttime and delivery rate for the interval and exits both the start-timecell 574 and the delivery-rate cell 576.

The third panel 580 presents instructions to the user. In one possibleembodiment, the user interface presents a help label 582 (e.g., thequestion mark in the illustrated example) in each of the group boxes549, 564, and 570. When the user clicks on a help label 582,instructions specific to the group box or other aspects of the userinterface associated with the help label are presented in the thirdpanel. Alternatively, the user can point to a particular aspect of theuser interface and right click on the mouse to present field-specificinstructions in the third panel.

An additional panel (not shown) can include control options forperforming a basal test. The additional panel will include options toset up and review the results of the basal test. The additional panelwill have analogous functionality to that described above in conjunctionwith FIGS. 7-9.

FIG. 27B illustrates the second primary window 544 b, which is forsetting the operating parameters of the meal bolus delivery programs.The meal bolus primary window includes two panels. The first panel 584has a pair buttons 586, a first spin box 588, a second spin box 590, athird spin box 592, a fourth spin box 594, a first check box 596, asecond check box 598, a third check box 600, a fourth check box 601 anda meal bolus table 602.

The pair of buttons 586, spin boxes 588, 590 and table 591 are presentin a first group box 604. The check boxes 596, 598, 600, and 601 arepresented in a second group box 606, and the table 602 is present in athird group box 608. Spin boxes 592 and 594 are present in a fourthgroup box 610. The pair of buttons 586 is for setting the meal bolusdelivery program to use either units of insulin or grams ofcarbohydrates. The pair of buttons 586 toggle between set and clearedstates so that when one is set the other cleared. The user set the firstbutton to program the meal bolus programs in units of insulin and setsthe second button to program the meal bolus programs in grams ofcarbohydrates

The first spin box 588 is for setting the maximum bolus that the pump100 can deliver when executing the meal bolus program. The second spinbox 590 is for setting the duration of the bolus. The table 591 is forsetting the user's fixed carbohydrate ratio. The table 591 optionallyalso works in conjunction with functionality to set a schedule ofcarbohydrate ratios configured to change based on the time of day.

In the fourth group box 610, the spin box 592 is for programming inunits of insulin and is for setting the increments at which a user canspin through bolus amounts. The spin box 594 is for programming in gramsof carbohydrates and is for setting the increments at which a user canspin through grams of carbohydrates to be consumed in a meal.

When the user sets the first button for programming in units of insulin,the third spin box 592 is enabled and the fourth 594 spin box isdisabled. When the user sets the second button for programming in gramsof carbohydrates, the fourth 594 spin boxes is enabled, and the thirdspin box 592 is disabled.

To enable the extended bolus program, the user sets the first check box596. To enable the combination bolus program, the user sets the secondcheck box 598. To enable the audio bolus function, the user sets thethird check box 600.

To enable to food database, the user sets the fourth check box 602.Selection of the fourth check box 602 can optionally trigger creation ofanother window (not shown) used for browsing a food database stored onthe computer.

The custom meal bolus table 608 has a plurality of rows, and each rowhas a plurality of cells. The user navigates through the meal bolustable 608 using procedures substantially similar to that of the basalrate table. Also similar to the basal rate table, the custom meal bolustable 608 can have various spin boxes that become visible when a cellhas focus. The spin boxes are for entering values and pre-typed textinto the cell with which it is associated.

Within the meal bolus table 608, each row has seven cells. The firstcell 612 has a check box 613. To enable the custom meal bolus defined bythat row, the user sets the check box 613. The second cell 614 has atext field in which the user types a name to identify the custom mealbolus defined by that row. An example includes pizza, when the operatingparameters for the custom meal bolus are customized to deliver insulinfor working against a meal of pizza. Other examples, might includebreakfast, lunch, dinner, snack, or any other specific type of food,drink, or meal.

The third cell 616 contains a text field for entering the type of custommeal bolus, whether it is a standard bolus, an extend bolus, or acombination bolus. In one possible embodiment, a spin box is presentedin the third cell 616 when focus is placed on the cell. The user canthen spin through the types of bolus (e.g., standard, extended, orcombination) and set the desired type. The fourth cell 618 is a numericfield for entering the default number of carbohydrates to be deliveredby the bolus program defined by that row. The fifth cell 620 is aduration field in which the user enters the duration of the bolusdelivery if the bolus program defined by that row is an extended bolusor a combination bolus. The sixth cell 622 is a numeric field in whichthe user enters the percent of the bolus to be delivered immediately ifthe bolus program defined by that row is a combination bolus.

The seventh cell 626 contains a text field for entering the type ofcarbohydrate ratio entered into the pump 100. In the embodiment shown,the carbohydrate ratio is either a Fixed or Scheduled ratio. When aScheduled carbohydrate ratio is selected, the custom bolus uses thecarbohydrate ratio that is currently in use by the pump 100. If a Fixedcarbohydrate ratio is selected, the custom bolus uses the carbohydrateratio entered in the eighth cell 624. In one possible embodiment, a spinbox is presented in the seventh cell 626 when focus is placed on thecell. The user can then spin through the types of carbohydrate ratios(e.g., Fixed or Scheduled) to set the desired type. The eighth cell 624is a numeric field in which the user enters the carbohydrate ratio thepump 100 is to use when the seventh cell is set to Fixed. Thecarbohydrate ratio is used when calculating the bolus amount to deliver.The eighth cell 624 allows the user to enter a customized carbohydrateratio independent of the carbohydrate ratio schedule. For example, auser might use one carbohydrate for a custom meal bolus to be deliveredbefore an early morning breakfast and a different carbohydrate ratio fora custom meal bolus to be delivered prior to an exercise session.

If the type of meal bolus set in the third cell (Type of Meal Bolus) 616is standard, the fifth cell (Duration) 620 and sixth cell (% asImmediate) 622 are disabled and cleared. If the type of meal bolus setin the third cell 616 is an extended bolus, the fifth cell 620 isenabled and the sixth cell 622 is disabled and cleared. If the type ofmeal bolus set in the third cell 616 is set as a combination bolus, thefifth 620 and sixth 622 cells are enabled.

Also, the fourth cell 618 allows a default number carbohydrates for thecustom bolus to be entered. For example, if a user eats a 40 gramcarbohydrate snack before bed each night, a custom meal bolus called“Bedtime Snack” could be created with a default carbohydrate value of 40grams. The default value can be adjusted before the bolus is delivered.

An optional second panel (not shown) in the primary window 544 b for themeal bolus delivery program presents instructions. It operates in amanner substantially similar to the third, instruction panel 580 in thefirst primary window 544 a for the basal rate delivery programs asdescribed above.

FIG. 27C illustrates the third primary window 544 c, which is forsetting the operating parameters for the correction bolus deliveryprogram. The primary window 544 c can contain two panels. The firstpanel 628 has buttons, check boxes, and spin boxes. A first group box630 in the first panel 628 has first and second check boxes 632 and 634.To control the pump 100 to make the correction bolus delivery programavailable through the main menu 190 and to display a correction bolusmenu item in the main menu 190, the first check box 632 is set. To makethe correction bolus program available through the meal bolus deliveryprograms described above, the second check box 634 is set.

A table control 638 resides within a second group box 640, and sets aschedule of correction factors. The correction factors define operatingparameters used by the correction bolus program. The table controlallows the user to define a start time and a Factor, which refers to theamount of correction which could occur at that time of day. Alternately,a pair of buttons set the units for the operating parameters used by thecorrection bolus program. The pair of buttons toggle between set andcleared states so that when one is set the other is cleared. The firstbutton is set to use mg/dL and the second button is set to use mmol/l. Afirst spin box is for setting the correction bolus factor. When thefirst spin box is in focus, the user spins through value until thedesired correction factor is set. The pair of buttons and the first spinbox are optionally organized into the second group box 640.

A third group box 635 has buttons and a table control. The buttons 636set the method by which blood glucose is measured. In the embodimentshown, the buttons 636 allow a user to select between units of mg/dl andmmol/L. The table control 637 defines one or more target blood glucoselevels and associates the target blood glucose levels with times of theday. In an optional embodiment, the table control 637 allows a user todefine a schedule or target blood glucose levels for one or more days.

A fourth group box 644 in the first panel 628 has buttons and spinboxes. A second spin box 642 is for setting the duration of activity oraction for the insulin. As discussed above, the duration of activity isthe length of time that each bolus remains working in the user's body.To enter the duration of activity, the user spins through values in thesecond spin box 642 until the desired value is set. Optional spin boxes(not shown) set the start time and tail time of an insulin absorptionmodel. To enter the start and tail times, the user spins through thevalues in the respective spin boxes until the desired values are set.Buttons may set the insulin absorption model to be used in the pump bytoggling between set and cleared states so that when one is set theother two buttons are cleared. Each button can correspond to a linearabsorption model such as is shown in FIG. 14A, a nonlinear absorptionmodel, such as is shown in FIG. 14C, or a custom absorption model, usinga graphical user interface which optionally appears upon selection ofthe button (not shown).

A fifth group box 631 enables and sets the change in the correctionfactor based on the user's blood glucose level. A check box 633 enableschanges in the correction factor based on the user's current bloodglucose level, of the form “If blood glucose is at least X, add Y %.” Aseries of spin boxes 635 set the threshold blood glucose reading atwhich the rule takes effect for one or more rules, and represents the“X” value in the above statement for each selected rule. A second seriesof spin boxes 637 sets the percentage increase in insulin delivery uponreaching the threshold blood glucose level, and represents the “Y” valuein the above statement for each corresponding selected rule. In theimplementation shown, four separate sets of spin boxes are used to setfour blood glucose dependent rules for insulin delivery. However, moreor fewer sets of spin boxes are included according to specificimplementations of the group box 631 and correction factors.

An optional second panel (not shown) in the primary window 544 c for thecorrection bolus delivery program presents instructions. It operates ina manner substantially similar to the third, instruction panel 580 inthe first primary window 544 a for the basal rate delivery programs asdescribed above.

FIG. 27D illustrates the fourth primary window 544 d, which is forsetting operating parameters for the temporary rate programs. Theprimary window 544 d has two panels. The first panel 648 has a firstcheck box 650, a second check box 652, a third check box 654, a pair ofbuttons 656, a spin box 658, and a temporary rate table 660. The firstcheck box 650 and pair of buttons 656 are in a first group box 662. Thesecond 652 and third 654 check boxes and the spin box 658 are in asecond group box 664. The table 660 is in a third group box 666.

The pair of buttons 656 sets the temporary rate either as a percentageof the running basal rate or as a new temporary basal rate. The pair ofbuttons 656 toggle between set and cleared states so that when onebutton is set the other button is cleared. The user sets the firstbutton to set the temporary rate as a percent of the basal rate. Theuser sets the second button to set the temporary rate as a new,temporary basal rate.

To set a reminder so that the pump 100 intermittently generates areminder (audible and/or vibratory) while the temporary rate program isrunning, the user sets the second check box 652. When the second checkbox 652 is set, the spin box 658 is enabled. The spin box 658 is forsetting the interval between reminders. The spin box 658 is disabledwhen the second check box 652 is cleared. To set the pump 100 togenerate a final reminder upon completion of the temporary rate, theuser sets the third check box 654.

The temporary rate table 660 has a plurality of rows 668, and each row668 contains a plurality of cells. The user navigates through thetemporary rate table 660 using procedures substantially similar to thatof the basal rate table. Also similar to the basal rate table 602, thetemporary rate table 660 can have various spin boxes that become visiblewhen a cell has focus. The spin boxes are for entering values andpre-typed text into the cell with which it is associated.

Within the temporary rate table 660, each row has six cells. The firstcell 670 has a check box 672. To enable the temporary rate defined bythat row, the user sets the check box 672. The second cell 674 has atext field in which the user types a name to identify the temporary ratedefined by that row. Examples might include exercise, 5-mile run, sick,evening, and the like. The third cell 676 is a text field to set thetemporary rate to be programmed as a percent of current basal rate or asa new rate. In one possible embodiment a spin is present in the thirdcell 676 when focus is place on the cell. The user then spins throughthe types of temporary rates (e.g., % of Basal or New Rate) and sets thedesired type.

The fourth cell 678 is for assigning the percentage of the running basalrate to set as the temporary rate. The fifth cell 680 is for setting anew rate for the temporary rate. When the user enters % of basal in thethird cell 676, the fourth cell 678 is enabled and the fifth cell 680 isdisabled. When the user enters New Rate in the third cell 676, thefourth cell 678 is disabled, and the fifth cell 680 is enabled. Thesixth cell 682 is for setting the duration of the temporary rate.

Additionally, in one possible embodiment, when the user sets the firstbutton to adjust the delivery rate as a percent of the basal rate, thecheck box 672 is set in the first cell 670 for each row 668 in whichthere is a percentage in the fourth cell 678. The check box 672 in thefirst cell 670 is cleared for each row 668 in which there is a deliveryrate value in the fifth cell 680. Similarly, when the user sets thesecond button to use a new delivery rate, the check box 672 is set inthe first cell 670 for each row 668 in which there is a delivery ratevalue in the fifth cell 680. The check box 672 in the first cell 670 iscleared for each row 668 in which there is a percentage value in thefourth cell 678.

The second panel 684 in the primary window 544 d for the temporary ratedelivery programs presents instructions. It operates in a mannersubstantially similar to the third, instruction panel 580 in the firstprimary window 544 a for the basal rate delivery programs as describedabove.

In addition to operating parameters, one possible embodiment of the userinterface 542 also enables a user to view, edit, and enter other data,character strings, and settings that are loaded on the insulin pump 100.

For example, FIG. 27E illustrates the fifth primary window 544 e, whichis for setting the banner displayed in the home page 152 of the pump100. Primary window 544 e is in the stack of primary windows 544. Thefifth primary window 544 e includes two panels. The first panel 690 hasa field check box 692 and a text field 694 mated to the checkbox 692. Toenter text into the home page 152, the user sets the checkbox 692 andenters text (numbers and letters as desired) into the text field 694. Ifthe pump 100 includes multiple home pages 152 through which the user canscroll, an embodiment of the primary window 544 e includes a checkbox692 and mating text field 694 for each of the home pages 152. The usercan then designate certain text for a particular home page 152 bysetting the checkbox 692 associated with that home page 152 and enteringtext into the mating text field 694. In an alternative embodiment, ifthe text in the text field 694 is too long to fit into one display, thepump 100 automatically generates multiple home pages 152 through whichthe user can scroll and divides the text from the text field 694 betweenthe multiple home pages 152. In another embodiment, similar text fieldsand associated checkboxes can be used to customize displays and messagesfor particular alarms, alerts, and reminders.

The second panel 696 in the primary window 544 e presents instructions.It operates in a manner substantially similar to the third, instructionpanel 580 in the first primary window 544 a for the basal rate deliveryprograms as described above.

FIG. 27F illustrates the sixth primary window 544 f, which is forprogramming basal delivery patterns in a weekly schedule, as describedabove in conjunction with FIG. 25. The sixth primary window 544 fincludes two panels. The first panel 700 has a first spin box 702 and asecond spin box 704 configured to set the basal pattern and missed mealbolus alerts for weekday operation. To select a weekday basal pattern,the user can spin through the listed basal patterns programmed in thebasal patterns tab 544 a and set the desired type. To select a weekdaymissed meal alert set, the user can spin through the listed alert setsconfigured in the meal boluses tab 544 b and set the desired type. Thefirst and second spin boxes 702, 704 correspond to a graphicalrepresentation 710 of the weekday schedule. The graphical representationdisplays the basal rates and the missed meal bolus alert times that areselected using the spin boxes 702, 704 on an hour by hour basis.

The first panel 700 also has a third spin box 706 and a fourth spin box708 configured to set the basal pattern and missed meal bolus alerts forweekend operation. To select a weekend basal pattern, the user can spinthrough the listed basal patterns programmed in the basal patterns tab544 a and set the desired type. Likewise, to select a weekend missedmeal alert set, the user can spin through the listed alert setsconfigured in the meal boluses tab 544 b and set the desired type. Thefirst and second spin boxes 706, 708 correspond to a graphicalrepresentation 712 of the weekend schedule, which displays the basalrates and meal bolus alerts analogously to the weekday graphicalrepresentation 706. In an alternative embodiment, the first panel 700can include seven spin box controls, corresponding to each day of theweek. In a further alternative embodiment, the first panel 700 caninclude a graphical calendar display configured to allow monthlyprogramming of the basal pattern and/or missed meal bolus alerts.

A first check box 714 enables the weekly schedule option in the softwareand on the pump 100. The first check box 714 is by default in a checked,or enabled, state.

One or more indicators 718 correspond to alarms scheduled to occurduring the day displayed. The indicators and corresponding alarms canrepresent appointments, times of the day at which blood glucose valuesshould be checked, or other user reminders.

The second panel 716 in the primary window 544 f presents instructions.It operates in a manner substantially similar to the instruction panel580 in the first primary window 544 a for the basal rate deliveryprograms as described above.

Yet other embodiments of the user interface 542 include various windows,buttons, checkboxes, spin boxes, and fields for setting other parametersused to operate the pump 100. Examples of such other parameters that canbe set through the user interface 542 include various format settings,alarms, reminders, operating limits, report formats, security settings,character strings, and indeed any other operating parameters, data,settings, and character strings that can be programmed into the pump100.

Referring to FIGS. 27A-27F, to download the operating parametersdisplayed in an active primary window 544, the user clicks on thedownload button 686. The operating parameters relating to the activeprimary windows are then downloaded into the pump 100 over thecommunication link. The pump 100 returns the downloaded operatingparameters to the computer 534, which compares the returned operatingparameters to the sent operating parameters. If the returned and sentoperating parameters match, the computer 534 sends a handshake signal tothe pump 100 and the microprocessor 102 maps each of the downloadedoperating parameters to its designated memory addresses in RAM 116 andsaves the downloaded operating parameters in RAM 116. If the returnedand sent operating parameters do not match, the computer 534 generatesan error signal and sends the error signal to the pump 100. The pump 100then discards the downloaded operating parameters and preserves thepreexisting operating parameters already stored in RAM 116.

To upload operating parameters from the pump 100 into the active primarywindow 544, the user clicks the upload button 688. The profile settingsin RAM 116 that correspond to the active primary window 544 are thenretrieved from RAM 116 on the pump 100 and are sent to the computer 534.The uploaded operating parameters are then populated into the fields ofthe active primary window 544, including all secondary windows 554. Tosave the profile settings, the user clicks the save button 690. Theprofile settings that populate the active primary window 544 then aresaved in the storage device 538. In one possible embodiment, the name ofthe file that includes the saved data is the name of the pump user.

Furthermore, the user interface 542 can be used on the computer 534 toprogram and manage pumps 100 for several different pump users. In onesuch embodiment, the computer 534 is programmed with an initialinterface that includes a text field in which the name of the pump useris entered either through the computer keyboard or through a spin box.Upon entering the name of the pump user, the computer 534 populates thedata saved for that pump user's pump 100 into the user interface 542. Inan alternative embodiment, the computer 534 is loaded with a menu inwhich the name of each pump user having stored data is included as amenu item. Selecting the name/menu item causes the computer 534 topopulate the user interface 542 with data.

The various embodiments described above are provided by way ofillustration only and should not be construed to limit the invention.Those skilled in the art will readily recognize various modificationsand changes that may be made to the present invention without followingthe example embodiments and applications illustrated and describedherein, and without departing from the true spirit and scope of thepresent invention, which is set forth in the following claims.

1-15. (canceled)
 16. A method, comprising: providing a medical infusionpump, the medical infusion pump associated with a specific user; andproviding software operable on a computing device, wherein the softwareis adapted to: receive information relating to operation of the medicalinfusion pump by the user through a connection between the medicalinfusion pump and the computing device; and display information receivedfrom the medical infusion pump on a user interface presented on adisplay, wherein the user interface includes a plurality of stackedwindows, each window having a corresponding tab that is displayed on theuser interface adjacent the tabs of the other windows, each tab beingselectable to bring the window corresponding to that tab to a top of thestack as an active window in which a user can view and edit informationwhile the windows corresponding to the other tabs remain in thebackground.
 17. The method of claim 16, wherein the software is furtheradapted to generate a report relating to use of the medical infusionpump by the user.
 18. The method of claim 17, wherein the software isadapted to display the report on the display.
 19. The method of claim17, wherein the report includes information regarding delivery ofboluses of medicament provided by the medical infusion pump.
 20. Themethod of claim 17, wherein the report includes information regardingbasal delivery of medicament provided by the medical infusion pump. 21.The method of claim 17, wherein the report includes informationregarding alarms provided by the medical infusion pump.
 22. The methodof claim 16, wherein the information includes historical informationrelating to use of the medical infusion pump by the user.
 23. The methodof claim 16, wherein the software is further adapted to displayinformation received from the medical infusion pump in a graphicalformat on the display.
 24. The method of claim 16, wherein the softwareis further adapted to receive information from a plurality of medicalinfusion pumps associated with a plurality of different users.
 25. Themethod of claim 24, where a window corresponding to a specific user ofthe plurality of users can be made the active window by selecting a nameof the specific user on the user interface.
 26. The method of claim 16,wherein providing a medical infusion pump includes providing an insulinpump.
 27. A method of monitoring use of a medical infusion pump,comprising: receiving at a computing device information from a medicalinfusion pump associated with a specific user relating to operation ofthe medical infusion pump by the user, the information received througha connection between the medical infusion pump and the computing device;and displaying the information received from the medical infusion pumpon a user interface presented on a display communicatively coupled withthe computing device, wherein the user interface includes a plurality ofstacked windows, each window having a corresponding tab that isdisplayed on the user interface adjacent the tabs of the other windows,each tab being selectable to bring the window corresponding to that tabto a top of the stack as an active window in which a user can view andedit information while the windows corresponding to the other tabsremain in the background.
 28. The method of claim 27, further comprisinggenerating a report relating to use of the medical infusion pump by theuser.
 29. The method of claim 28, further comprising displaying thereport on the display.
 30. The method of claim 28, wherein the reportincludes information selected from the group consisting of: delivery ofboluses of medicament provided by the medical infusion pump, basaldelivery of medicament provided by the medical infusion pump, and alarmsprovided by the medical infusion pump.
 31. The method of claim 27,wherein the information includes historical information relating to useof the medical infusion pump by the user.
 32. The method of claim 27,wherein displaying the information includes displaying the informationin a graphical format.
 33. The method of claim 27, further comprisingreceiving information from a plurality of medical infusion pumpsassociated with a plurality of different users.
 34. The method of claim33, where a window corresponding to a specific user of the plurality ofusers can be made the active window by selecting a name of the specificuser on the user interface.
 35. The method of claim 27, wherein themedical infusion pump is an insulin pump.
 36. A non-transient computerreadable medium containing program instructions for causing a computingdevice to perform the method of claim 27.